Environ resource catalogs

This branch depends on new-txn-package which hasn't landed yet. It is more work on the Juju Internal Storage feature.
A new ResourceCatalog collection is introduced. This collection can Put/Get/Remove Resource entries representing a data blob in Juju storage. The resource entries record md5 and sha256 checksums of the data and the opaque storage path. If a Put is done and there already exists an entry with the same checksums, a reference to the existing document is returned rather than creating a new record. When removing a Resource, the ref count is decremented and the document is removed when the ref count reaches 0.