Build & deployment improvements

Added support for OPENSHIFT_AUTO_DEPLOY to enable/disable automatic
deployments after building

Added support for OPENSHIFT_DEPLOYMENT_TYPE - disallow git push if set
to binary

Added support for deploying branches other than master

Added "gear deploy <mybranch>"

Added support for preserving previous deployments (to support rollback)

Switched to using date/time based deployment directories

Added initial support for 'gear prepare FILE'

Added support for distributing a deployment to child gears

Added creation of app-deployments and app-archives directories to app
setup

Added 'activate' deployment action

Added writing of deployment metadata w/deployment id and state

Added support for app-dependencies to be unique per deployment

Updated Python cart to support app-root/runtime/dependencies

Added deployment rollback support

Added PathUtils#oo_lchown to change symlink ownership of repo and
dependencies symlinks
Build & deployment improvements

Added old deployment directory pruning
Reduced list of dirs to sync in sdk#sync_gear_repos
Added copying of dependencies between deployments (to save on build
time) unless force_clean_build is specified
Build & deployment improvements

Corrected OPENSHIFT_REPO_DIR override in #build
Build & deployment improvements

Move app dependencies from the previous deployment to the new build and
delete the previous deployment prior to performing the new build if the
app isn't configured to allow rollbacks (thus avoiding having 2 copies
of the dependencies and repo for a brief period of time)
Build & deployment improvements

WIP for moving the haproxy cartridge's gear registry to the runtime
platform

Added oo-ssh to use for rsync/ssh as the gear user

Added "primary" endpoint option that indicates that the endpoint should
be load balanced if the app is scalable (along with
OPENSHIFT_LOAD_BALANCER_PORT)

Added microseconds to the deployment dir datetime to avoid collisions
in unit tests

:deployment_id is now optional for ApplicationContainer#distribute and
#activate. If not specified, they will use the current/latest deployment

Removed distribute's, activate's, and rollback's usage of the broker to
get gear groups, replaced with using the new platform GearRegistry to
determine child gears
Build & deployment improvements

Add functional tests
Build & deployment improvements

Update basic scaling test to it now:
- creates an app
- validates the gear registry contents
- verifies the <title> retrieved from /
- scales up to 2
- verifies <title> from both gears
- modifies the <title> and pushes the change
- verifies <title> was updated on both gears
- scales to 3
- verifies <title> is still updated on all 3
- issues rollback
- verifies <title> matches rolled back version
Build & deployment improvements

Switch post_configure to use #prepare

Don't set things up in post_configure if it's a load balancer cartridge