Add windows userdata support

* refactor cloudinit packages to include support for windows userdata
* fix NewMachineConfig to store corect paths when on windows
remove global CloudInitOutputLog
Start switch to using api for machine upgrade after restore
Merge branch 'master' into backup-ssh
Use juju status to get machine address
Use tag rather than whole machine
Remove unneeded retry loop
Error handling tweak
Use machine id rather than tag for PublicAddress
Shut-off direct database access
environs/tools: fix SHA256 summing

SHA256 summing of archives was totally
broken; summing the contents rather
than the resulting tgz file. Changed
Archive to just tgz, and added another
function to do the hash.
Remove duplicated test
fixed a bson tag problem and style changes to metric uuid field
Merge pull request #581 from mattyw/metric-uuid-fix

fixed a bson tag problem and style changes to metric uuid field
Merge pull request #579 from gabriel-samfira/add-windows-userdata

Add windows userdata support

This is the same as #189 but with a fix for [bug-1359333](https://bugs.launchpad.net/juju-core/+bug/1359333)

Tests pass locally, ran bootstrap from Windows, created staging branch and successfully deployed both windows and ubuntu.
Update deps for lxc testing.
Merge pull request #582 from sinzui/makefile-changes-for-testing

Update deps for lxc testing.
Added upgradeWorkerContext.IsUpgradeRunning()

This cleans up some previous uses of the UpgradeCompleted channel and
will be helpful for upcoming changes to the upgrader worker.
worker/upgrader: allow downgrades for aborted upgrades

In some cases upgrades will need to be aborted and the best course of
action will be to restart in to the previous agent version. This
revision modifies the upgrader worker so that it will allow downgrades
to the pre-upgrade tools version, but only if an upgrade is still in
progress. This allows the upgrade-steps worker to trigger a downgrade
to the previous agent version by changing the environment's
agent-version.
cmd/jujud: downgrade agent-version if a state fails to come up for upgrade

If during an upgrade one or more state servers fail to signal it is
ready for upgrade, the master state server will modify the environment
agent version to trigger a downgrade to the previous agent version.

So that the upgrader worker will accept downgrades to the previous
agent version (it normally won't), upgradeWorkerContext's
IsUpgradeRunning method is now passed to the upgrader
worker. Downgrades to the previous agent version are allowed if an
upgrade is in progress.