First cut ListNetworks
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
move filter implementation to its own package, put it behind an interface
use real NewFilter func in tests
Merge branch 'master' into listnetworks-maas
Merge branch 'master' into uniter-extract-filter
Merge branch 'master' into listnetworks-maas
Skeleton test for ListNetworks
Updated comment and logging
Add comments to test
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