Serve charm archives from the API server

Charm archives are now stored in the blobstore, and served over HTTPS.
The uniter client is modified to construct URLs using the API server URL.

We also introduce a new database-master upgrade step which migrates existing
charm archives from provider storage to environment storage. The final step
of the migration is to update the charm's document in state to record the
storage path.
Would using filepath.Join be cleaner? Maybe not.
Should we care about the error if the environ tag is not valid?