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
state: tidy up txnRunner and friends
Add blobstore to dependencies.tsv
Merge pull request #663 from axw/state-toolstorage

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.