worker/uniter/context/jujuc: symlink tools to correct destination

Hook tools were being symlinked to the unit-specific tools symlink
when the first unit was deployed. This causes problems when that
unit is destroyed, and another unit of the same service remains;
the symlinks remain broken.

We change EnsureSymlinks to dereference the target destination if
it is a symlink.

Fixes https://bugs.launchpad.net/juju-core/+bug/1391645
State: cleanup code

Remove useless code. change.C is the collection name, which is used to get the collection, which intern is used to set change.C to the collection name.
Ensure metadata file gets closed
Merge pull request #1132 from wallyworld/lp-1392514

Ensure metadata file gets closed

Fixes: https://bugs.launchpad.net/juju-core/+bug/1392514
Merge pull request #1131 from waigani/code-cleanup

State: cleanup code

Remove useless code. change.C is the collection name, which is used to get the collection, which intern is used to set change.C to the collection name.
state/multiwatcher: rename Watcher to Multiwatcher
state: move Multiwatcher type into state

This PR resolves a lot of dependency issues between state and the multiwatcher.

* api no longer depends on `state`, just the `state/multiwatcher` pacakge for the `Delta` type
* the set of dependencies of `state/multiwatcher` is signficantly smaller, it effectively only contains types which are defined for use by state.
* all the _other_ watchers live in the state package, so this change unifies the one holdout, the multiwatcher.
Merge pull request #1126 from axw/lp1391645-uniter-tools-symlinks

worker/uniter/context/jujuc: symlink tools to correct destination

Hook tools were being symlinked to the unit-specific tools symlink
when the first unit was deployed. This causes problems when that
unit is destroyed, and another unit of the same service remains;
the symlinks remain broken.

We change EnsureSymlinks to dereference the target destination if
it is a symlink.

Fixes https://bugs.launchpad.net/juju-core/+bug/1391645
provider/maas: stop retrying AZs when one succeeds

Derp. Forgot to break out of loop on success.

Fixes https://bugs.launchpad.net/juju-core/+bug/1392411
state: multiwatcher tests pass
fixed tests
remove unused logger
Merge pull request #1135 from axw/lp1392411-maas-azretry-break

provider/maas: stop retrying AZs when one succeeds

Derp. Forgot to break out of loop on success.

Fixes https://bugs.launchpad.net/juju-core/+bug/1392411
Merge pull request #1134 from davecheney/215-state-multiwatcher-rename

state/multiwatcher: rename Watcher to Multiwatcher

Rename `multiwatcher.Watcher` to `multiwatcher.Multiwatcher` in preparation for moving this type into the `state` package.
Merge branch 'master' of https://github.com/juju/juju into 216-state-move-multiwatcher
Fix unused import
Merge pull request #1137 from davecheney/216-state-move-multiwatcher

state: move Multiwatcher type into state

This PR resolves a lot of dependency issues between state and the multiwatcher.

* api no longer depends on `state`, just the `state/multiwatcher` pacakge for the `Delta` type
* the set of dependencies of `state/multiwatcher` is signficantly smaller, it effectively only contains types which are defined for use by state.
* all the _other_ watchers live in the state package, so this change unifies the one holdout, the multiwatcher.