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.
My understanding is that juju's state is a reflection of how the user wants the machines, services, and units to look.  That is stored in the DB.  Getting there is what I'd call normal state operation and I image that the DB also has collections for that data.  (My point there was that it would be nice if those were grouped separately from the pure state collections.)  Then there is backups that happens to use state's DB, but is neither part of state nor its normal operation.

Given that there was already some similarity with file storage between backups and tools, I was wondering if the tools metadata collection was likewise similar to the backups collection.  Like I said, it seemed to me like the tools stuff is actually part of normal state operation.