Add custom image metadata to environment storage

Image metadata is now added to environment storage
instead of provider storage. Custom simplestreams
data sources are now registered in the environs
package, and the imagemetadata.SupportsCustomSources
interface has been removed.

At bootstrap time, if --metadata-source is specified
then we register a datasource pointing to the image
metadata (if it exists), and we read it and add it
to the MachineConfig. We use this to create simplestreams
files on disk on the bootstrap machine, which jujud
bootstrap-state reads and adds to environment storage.

State servers now register an environment-storage
based datasource directly after opening state. This
will be used instead of the old provider state
datasource.
Fix tests
Address review comments
Merge pull request #774 from axw/image-metadata-envstorage

Add custom image metadata to environment storage

Image metadata is now added to environment storage instead of provider
storage. Custom simplestreams data sources are now registered in the
environs package, and the imagemetadata.SupportsCustomSources interface has
been removed.

At bootstrap time, if --metadata-source is specified then we register a
datasource pointing to the image metadata (if it exists), and we read it
and add it to the MachineConfig. We use this to create simplestreams files
on disk on the bootstrap machine, which jujud bootstrap-state reads and
adds to environment storage.

State servers now register an environment-storage based datasource directly
after opening state. This will be used instead of the old provider state
datasource.