Fix up a race condition in the aggregator test.

The code assumed that 'go a(); go b()' would always call a() first, but that isn't
guaranteed by the runtime.
There was a bunch of other code that happened to work because of bad assumptions, so
I went around and cleaned them up (it assumed that it was ok for results to be of length
100 when making a request for 10 ids, which only worked because the aggregation code looped
over the input rather than looping over the result of the request).
Add some trace level logging which will hopefully help us understand why the
machine address updater keeps saying that it is updating addresses with values that haven't changed.
Address bug #1362453.

When storing the addresses of a Machine, we won't ever want to use the ScopeLinkLocal addresses,
both PublicAddress and PrivateAddress will explicitly filter them out, and they just confuse things
when dealing with addresses (at one point they were candidates for Clients to try to connect to
the API server).
Use environ tag

This is a follow up branch to #553 (New EnvUser). Get the environ UUID
from the state environ tag.
Introduce and use FindTools provisioner API

We introduce a new FindTools API in the
provisioner facade, and move the existing
client FindTools API implementation into
the apiserver/common package. The provisioner
worker is updated to use this API instead
of going directly to provider storage (via
environs/tools.FindTools).

There are a couple of bugs already that require
this to be done, but now that we're moving tools
storage behind the API server it is imperative.

Fixes https://bugs.launchpad.net/bugs/1347984
Fixes https://bugs.launchpad.net/bugs/1304151
cmd/jujud: use appropriate timeout for run tests

Use LongWait for assertions of events that are
expected to occur, as described in testing/constants.go.

Fixes https://bugs.launchpad.net/juju-core/+bug/1362990
Merge pull request #636 from axw/provisioner-tools-api

Introduce and use FindTools provisioner API

We introduce a new FindTools API in the
provisioner facade, and move the existing
client FindTools API implementation into
the apiserver/common package. The provisioner
worker is updated to use this API instead
of going directly to provider storage (via
environs/tools.FindTools).

There are a couple of bugs already that require
this to be done, but now that we're moving tools
storage behind the API server it is imperative.

Fixes https://bugs.launchpad.net/bugs/1347984
Fixes https://bugs.launchpad.net/bugs/1304151
cmd/juju: mock out API for RemoveUserCommand tests
ActionResult refactor
provider/manual: default enable-os-refresh-update to true

The manual provider should be doing "apt-get update" and
installing packages by default.

Fixes https://bugs.launchpad.net/juju-core/+bug/1363130
Remove the println
Merge pull request #643 from axw/lp1363130-manual-default-os-update

provider/manual: default enable-os-refresh-update to true

The manual provider should be doing "apt-get update" and
installing packages by default.

Fixes https://bugs.launchpad.net/juju-core/+bug/1363130
mongo: move MongoInfo type
provider/local: don't put tools in cloud-config

While the user-data is not bounded like in ec2
etc., doing this does seem to cause additional
load on cloud-init.

Fixes https://bugs.launchpad.net/juju-core/+bug/1363143
Merge pull request #648 from axw/lp1363143-local-no-tools-in-cloudcfg

provider/local: don't put tools in cloud-config

While the user-data is not bounded like in ec2
etc., doing this does seem to cause additional
load on cloud-init.

Fixes https://bugs.launchpad.net/juju-core/+bug/1363143
Merge pull request #639 from axw/cmd-juju-removeuser-mock

cmd/juju: mock out API for RemoveUserCommand tests
Merge pull request #637 from axw/lp1362990-cmd-jujud-runtests-timeout

cmd/jujud: use appropriate timeout for run tests

Use LongWait for assertions of events that are
expected to occur, as described in testing/constants.go.

Fixes https://bugs.launchpad.net/juju-core/+bug/1362990
Merge pull request #647 from davecheney/189-mongo-move-mongoinfo-type

mongo: move MongoInfo type

This PR moves the `MongoInfo` type from the `environmentserver/authentication` package to the `mongo` package.

This change is necessary to unblock a larger change which was hitting a circular dependency.

With that said, as this change consists of _removing_ the import of the `environmentserver/authentication` from most packages (and renaming the type), it seems clear in hindsight that the `MongoInfo` type belongs in the `mongo` package.
review comments from Dimiter
Merge pull request #627 from jameinel/ignore-link-local-1362453

Ignore Link Local Addresses

This addresses 3 different issues, I can split them up if requested, but it is easiest to just land them together.

1) Race condition in aggregate_test.go. It had an assumption that:
  go funcA()
  go funcB()
would always call funcA before funcB. (Because the result list was a fixed response, and the processing code doesn't do any mapping of result ids to actual request ids.)
There was a fair bit in other tests that only really worked by happenstance, so I cleaned them up as well.

2) Add some Trace level logging about why 2 address lists don't match. I've seen a bunch of log entries that say "updating machine addresses" when nothing appears to have actually changed.

I can just shelve this, and instead only test manually and see if I find a fix, but I figure that trace level logging is cheap.

3) Actually fix bug #1362453 which is that when looking at Machine addresses, we include their LinkLocal address. Which isn't a useful address in any sense. And right now both PrivateAddress and PublicAddress take care to filter them out. However I thought it might be part of why (2) is getting confused, and certainly in the past I was seeing them end up in the list of APIHostPorts which is a bit silly (there is no reason to say that you can connect to a machine on its LinkLocal address.)