support for windows in ChangeAgentTools

The windows Symlink function checks for the existance of the source file before creating a symlink. If it cannot stat the file, then it errors. This is a limitation of how junction points work. You may not create a junction point (symlink) to an inexistent file.
Add the database master upgrade target, and check for valid steps.
Worked out if master, now for extra testing.
Merge pull request #226 from gabriel-samfira/windows-toolsdir

support for windows in ChangeAgentTools

The windows Symlink function checks for the existance of the source file before creating a symlink. If it cannot stat the file, then it errors. This is a limitation of how junction points work. You may not create a junction point (symlink) to an inexistent file.
update juju utils to fix windows build breakage
Merge pull request #320 from davecheney/139-update-juju-utils

update juju utils to fix windows build breakage
Add a test for the upgrade targets.
Refactoring post review.
Merge pull request #321 from howbazaar/schema-upgrade-type

Schema upgrade type

Add an upgrade target for DatabaseMaster, that should be used for any db-schema changes.

When the machine agent runs the upgrade steps now, it also checks to see if it is the master, and if so, uses this to determine the steps.
Update to fix licence dependencies
Removed unused fakeRestart func
Fix gnuflag rev
Merge pull request #325 from wallyworld/license-dependnecies

Update to fix licence dependencies

Update to fix licence dependencies
cmd/jujud: retry upgrades on failure

Given that we currently have no way of rolling back upgrades it's
worth retrying upgrades in case of transient errors. Logging around
upgrades has been improved a bit as well.

Future changes will improve the handling of upgrade error reporting
further (via agent status).
Merge pull request #322 from mjs/retry-upgrade-steps

cmd/jujud: retry upgrades on failure

Given that we currently have no way of rolling back upgrades it's worth retrying upgrades in case of transient errors. Logging around upgrades has been improved a bit as well.

Future changes will improve the handling of upgrade error reporting further (via agent status).
Ports document now used to store opened ports for machine/network tuple.
Merge pull request #239 from tasdomas/port-ranges-ports-doc

Ports document now used to store opened ports for machine/network tuple.

This patch is the beginning of a solution for #1216644 . 

To implement this, a new openedPorts collection is introduced, with a ports document for each machine and network (only the "juju-public" network is supported at the moment).

Any existing port entries in the unit document are migrated to the ports document. New ports are still appended to the ports list in the unit document - this functionality will be removed when the firewaller is updated to watch the openedPorts collection.