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.
I've changed `txnRunner` to also return the session. I realised while doing this that we don't need the "authenticated" logic around copying sessions anymore, since we run mongo in the tests without auth, and in production we never open state without a tag/password anymore. So, I cleaned it up.