implemented metric validation prior to storing
make validate a method on the metricBatch
review comments fixed and fixed unit tests
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
return errors.trace instead of bare err
Merge pull request #1074 from mattyw/metric-state-server-validation

implemented metric validation prior to storing

Before metrics are stored we do a validation check.  Validity is defined by the charm package - This pr just adds the call to the state server. The metrics tests have been updated to check the failure modes of validation and existing tests have been updated to ensure they use valid data

http://reviews.vapour.ws/r/376/
SetFile -> SetFileInfo.
Update utils dep.
Merge pull request #1119 from ericsnowcurrently/backups-SetFileInfo

SetFile -> SetFileInfo

http://reviews.vapour.ws/r/415/
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