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.
It would be nice to have a test for Tools() (and the other load methods) written using mongo/blobstore primitives to ensure that holistically, there's end-end testing. Otherwise it's a case of A tests B and B tests A but there's no guarantee that A and B do what's expected individually.