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/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.
Refactor Actions to use UUID instead of Sequence

First step in process of consolidating Actions and ActionResults.
Also part of exposing UUID to end clients rather than the Sequence
id that was not guaranteed to reflect order of enqueing.

A couple of other tweaks to avoid calling code that might panic in
non testing code.