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/