Make runCharmHook windows compatible

On windows, hooks (live every other executable) needs an extension. This branch adds support for running powershell and batch scripts as hooks. For powershell, we need to pass in exta arguments to exec.Command()
Add identity provider interface and agent id provider implementation
Valid login test for agent identity provider.
Merge pull request #1 from tasdomas/idprov

Valid login test for agent identity provider.
Add failing tests
Style fixes.
Merge Michael's work and fix some tests
Merge branch 'master' into id-prov
Add user identity provider
Fix some collection names
juju/testing: JujuConnSuite now always ensures that APIInfo returns an api.Info struct with the UUID of the mock environment set correctly.
Found a simpler way to get the environ tag
Copy sessions in pinger
cmd/jujud: extract the upgrade steps worker

Make the upgrade steps worker code more testable by ripping it out of
the machine agent.
cmd/jujud: rework upgrade tests

Take advantage of extracted upgrade steps worker. The upgrade tests
are now significantly simpler and faster.
upgradeWorkerFactory refactored to upgradeWorkerContext

Somewhat cleaner.
Refactor again...
Update dependencies.tsv
Merge pull request #356 from davecheney/144-damn-you-jujuconnsuite-why-you-no-take-environment

juju/testing: APIInfo now returns apiInfo structs with the UUID configured.

JujuConnSuite now always ensures that APIInfo returns an api.Info struct with the UUID of the mock environment set correctly.
Merge pull request #353 from mjs/extract-upgrade-steps-worker

Extract upgrade steps worker

Make the upgrade steps worker code more testable by ripping it out of the machine agent. Take advantage of this to make the upgrade tests significantly simpler and faster.

This is all in preparation for further changes around state agent synchronisation during upgrades.