Few loose thoughts on something that needs to be done to facilitate packaging of AppScale into ditros.

The easy route is probably to use something like /opt/appscale and set
APPSCALE_HOME to /opt/appscale. You're basically free to use whatever
directory structure you want under /opt. Generally nicer is to install
things properly in /usr which means that you need to adhere to the
standard packaging rules. A quick overview:

Binaries go into /usr/bin
Libraries go into /usr/lib (platform independent or 32 bit) or
/usr/lib64 (64 bit)
Architecture independent data goes into /usr/share/{module_name}

Using a subdirectory in /usr/lib(64)/ is common for libraries used
exlusively by an application.

The lib vs lib64 thing is sometimes a bit confusing. Python files for
instance go into lib, unless they contain any native executable code
in which case they go into lib64.

The filesystem hierarchy standard
( defines what goes where,
although it doesn't always make it very clear.

You can mimick the layout in /usr in the source tree, but you don't have
to, and I think it doesn't always make sense. You probably want to keep
your modules separated (AppDB, AppControler, AppServer, etc), but you
can use subdirs like lib for library sources, bin for binary sources,
share for scripts and data, etc for config files. I wouldn't recommend
including usr in the paths.