wip
Merge branch '189-mongo-move-mongoinfo-type' into 188-state-clone-state-serving-info
Merge branch 'master' of https://github.com/juju/juju into 188-state-clone-state-serving-info
wip
wip
wip
Merge branch 'master' of https://github.com/juju/juju into 188-state-clone-state-serving-info

Conflicts:
	cmd/jujud/bootstrap.go
	cmd/jujud/bootstrap_test.go
	mongo/mongo.go
	mongo/mongo_test.go
Merge pull request #662 from wallyworld/floating-ip-address-updates

Floating ip address updates

Fixes: https://bugs.launchpad.net/bugs/1364419

This is the second attempt to fix this issue. The first PR added code to use the floating IP address but it turns out that was only called at bootstrap, and then later the address poller overwrote the addresses. So extra code was needed in the instance gathering to also update the floating address details.
Merge pull request #672 from wallyworld/floating-ip-address-updates-trunk

Forward port pull request #662 from wallyworld/floating-ip-address-updates

Floating ip address updates

Fixes: https://bugs.launchpad.net/bugs/1364419

This is the second attempt to fix this issue. The first PR added code to use the floating IP address but it turns out that was only called at bootstrap, and then later the address poller overwrote the addresses. So extra code was needed in the instance gathering to also update the floating address details.
Move the test structure inline.
Merge pull request #671 from davecheney/188-state-clone-state-serving-info

state: clone params.StateServingInfo

This PR breaks a dependency of the `state` package on the `apiserver/params` package. The type in question was `params.StateServingInfo` which has been replicated into the `state` package as unfortunately this API type has been used to describe a document in mongodb.

Most of the uses of `params.StateServingInfo` have been replaced with `state.StateServingInfo` and there is a helper method in the `agent` package to translate between the types for the API.
Merge pull request #673 from howbazaar/megawatcher-internal-refactor

Move the test structure inline.

A subsequent branch requires access to the suite to set values in the expected changes, or test values.

Doing this move in a separate branch makes the subsequent change really easy to follow.
This is just a move of the array into the test function. No other changes.
Update Tools/FindTools APIs returned URLs

The upgrader, client and provisioner facades
have methods to find tools. Part of tools
is a URL, used to download the tools for
provisioning or upgrading an agent. We update
each of the facades to rewrite the tools URLs
to point at the API server.

Currently the API server will go off and
fetch the tools from provider storage. A
followup will change things so that the
API server hosts the tools itself, and serves
them out of GridFS.
AdminUserTag added to JujuConnSuite
Introduce state/toolstorage

state/toolstorage provides an interface, Storage,
for storing tools tarballs and metadata in state.
The tarballs are stored in GridFS, while the
metadata are stored in a Mongo collection.

State grows a single new method, ToolsStorage,
which constructs a toolstorage.StorageCloser.
The returned object will store tools metadata in
the "juju" database's "toolsmetadata" collection,
and the tarballs in the "blobstore" database.
state: remove "authenticated", simplify txnRunner/getManagedStorage

Don't need the "authenticated" logic around session copying anymore,
as we now run mongo without auth in the tests, and in production we
always open state with a tag/password.

txnRunner now returns the session associated with the runner, and
getManagedStorage and ToolsStorage are updated to use that.
txnRunnerWith is dropped.
Address review comments
Add a docstring and fix the import.
Address review comments
state: tidy up txnRunner and friends