upgrades: migrate uploaded image metadata to environment storage

We no longer search for image metadata in provider storage.
This is the final piece: migrate existing metadata from provider
storage to environment storage, preserving paths and data exactly.
cmd/juju: ensure that API calls used by "juju ssh" are allowed during upgrades

We recently had a regression where an API call required by "juju ssh"
wasn't being allowed by the API server while upgrades are in progress.
"juju ssh" is one of the few commands that is supposed to work during
upgrades.

The Client used by "juju ssh" is now forced into an interface and this
is checked using reflection against what the API server will allow
during upgrades. Effectively, the compiler helps to check that the
required API methods will be allowed.
apiserver: refactored upgradingRoot method check

Given that the API methods allowed during upgrade are all on the
Client facade, avoid having to write "Client." at the front of each
method name.
Merge pull request #803 from mjs/check-ssh-api-methods-are-allowed-during-upgrade

cmd/juju: ensure that API calls used by "juju ssh" are allowed during upgrades

We recently had a regression where an API call required by "juju ssh" wasn't being allowed by the API server while upgrades are in progress. "juju ssh" is one of the few commands that is supposed to work during upgrades.

The Client used by "juju ssh" is now forced into an interface and this is checked using reflection against what the API server will allow during upgrades. Effectively, the compiler helps to check that the required API methods will be allowed.

http://reviews.vapour.ws/r/64/diff/
Add tools-stream config to allow tools from different streams to be used
Merge pull request #797 from axw/upgrades-image-metadata

upgrades: migrate uploaded image metadata to environment storage

We no longer search for image metadata in provider storage.
This is the final piece: migrate existing metadata from provider
storage to environment storage, preserving paths and data exactly.
Fix yucky code
Add deprecation warning
provider/openstack: don't fail if product-streams isn't defined

Fixes https://bugs.launchpad.net/juju-core/+bug/1371605
Merge pull request #809 from axw/lp1371605-provider-openstack-keystoneurl

provider/openstack: don't fail if product-streams isn't defined

Fixes https://bugs.launchpad.net/juju-core/+bug/1371605
Merge pull request #805 from wallyworld/tools-stream

Add tools-stream config to allow tools from different streams to be used
Actions :: Client API