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.
Move actual verification script to it's own bash file to facilitate non hook use
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.