Make pre-push hook a little more friendly

 * If deleting a remote branch; don't do the full verification pass.
 * If there are no changes to push, don't do the full verification pass.
 * If there are unstaged or uncommitted changes then the verification
   pass doesn't really help, so prevent pushing when there are unstaged
   or uncommitted changes.
 * If there are no .go files in the changelist, skip full verification
   pass.
dumb move of everything context-related into new package
roughly chop context package into separate files. tests not touched, can't quite bear it right now
maas: static-ipaddresses capability detection
Move actual verification script to it's own bash file to facilitate non hook use
Merge pull request #925 from dimitern/maas-provider-static-ipaddresses-cap

maas: static-ipaddresses capability detection

Now the environment capability SupportsAddressAllocation
actually uses the MAAS version API to check if the needed
"static-ipaddresses" capability is supported. Bumped the
gomaasapi revision in dependencies.tsv.
Add some notes.
Add a test for Metadata.AsJSONBuffer.
Satisfy the test.
Merge pull request #927 from ericsnowcurrently/backups-metadata-file

Backups metadata file
Cycle through azs till we find one that works
Merge pull request #930 from wallyworld/better-openstack-az-placement

Cycle through azs till we find one that works

Update the openstack provider to behave more like ec2. If an attempt to start an instance on an availability zone fails because openstack says there are no available hosts, then try another zone till we find one that works. The provider previously just picked the first zone and didn't try any others.

Fixes: https://bugs.launchpad.net/juju-core/+bug/1380557
Add execute bit!
Merge pull request #921 from johnweldon/script-tweak

Make pre-push hook a little more friendly

 * If deleting a remote branch; don't do the full verification pass.
 * If there are no changes to push, don't do the full verification pass.
 * If there are unstaged or uncommitted changes then the verification
   pass doesn't really help, so prevent pushing when there are unstaged
   or uncommitted changes.
Refactor the UserManager and commands.

This branch adds consistency to the UserManager.
Primarily around the use of tags to pass the usernames.
Also untangles the API client from the server that was
there with the user manager structs being defined in the
apiserver package (not params).

The commands have been hooked up, and tested manually.

There were several clear changes needed when testing:
 * until we have multiple environments, creating a user
   should cause that user to have access to the environment
 * when adding a user, we should always write out the jenv
   file (until the user is able to login and see themselves)
 * the remove user command has been renamed to disable,
   as it wasn't removing the user at all (this is still todo)
Many changes due to review comments.

Deactivated renamed throughout.
Client side user manager now deals in strings.
Commands moved into user directory.
Fix spelling mistake.
Final review tweaks.
And fix the test.
Merge pull request #905 from howbazaar/user-manager-tag-redux

Refactor the UserManager and commands.

This branch adds consistency to the UserManager.
Primarily around the use of tags to pass the usernames.
Also untangles the API client from the server that was
there with the user manager structs being defined in the
apiserver package (not params).

The commands have been hooked up, and tested manually.

There were several clear changes needed when testing:
 * until we have multiple environments, creating a user
   should cause that user to have access to the environment
 * when adding a user, we should always write out the jenv
   file (until the user is able to login and see themselves)
 * the remove user command has been renamed to disable,
   as it wasn't removing the user at all (this is still todo)