apiserver/client: Migrated SetEnvironAgentVersion test to serverSuite
cmd/juju: created interface for upgrade-juju's client API

To allow mocking in tests.
cmd/juju: upgrade-juju "upgrade in progress" handling

upgrade-juju now special-cases handling the case of the
SetEnvironAgentVersion API call failing due to an upgrade appearing to
already be in progress. The user is given guidance on what they might
be able to do to fix it.

The change introduces a struct conforming to the upgradeJujuAPI
interface to allow testing of the upgrade-juju command without making
actual API calls.
apiserver: defined "upgrade in progress" error

Avoids repeating the error code string everywhere.
Also added SetEnvironAgentVersion API integration test.
cmd/juju: implemented upgrade-juju --reset-previous-upgrade flag

For aborting a current UpgradeInfo document in state (in the case of
previous partially complete upgrades). Use of this flag could break
otherwise healthy upgrades so the user is asked to confirm the action
(and --yes overrides the manual confirm).
cmd/jujud: added another upgrade related wrench point

This is useful to simulate a state machine failing after it has
indicated it's ready to upgrade.
Merge pull request #751 from mjs/upgrade-juju-abort-previous-upgrade

Allow upgrade-juju to detect and clear in-progress / partially completed upgrade

Review here: http://reviews.vapour.ws/r/20/