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 *think* we can rework stuff here to be able to reuse the existing txnRunner() method and not have to create a new variant. It will require changes to getManagedStorage() and even txnRunner() itself which is only used in 3 places. I think this will make the code cleaner too.