cmd/jujud: upgrade mode end fix

Fixed a case where upgrade mode wasn't being stopped when it
should. This is actually almost impossible to hit in practice but good
to fix anyway.

Added a unit test to cover this case.
Add a juju subcommand for backup.
Add the backups create subcommand.
Clean up names and doc comments.
Adjust to changes in api/backups.
Add doc comments for some "public" fields.
Add more doc comments.
Remove superflous whitespace.
Add another doc comment.
Test --help in a less fragile way.
Trace an error.
Patch out the API client rather than the call to its method.
Add another doc comment.
Fix some outdated doc comments.
BackupsSuite -> BaseBackupsSuite.
Fixed lp:1308146 -  charm config options with $ and . in the names now work
Merge pull request #786 from dimitern/lp-1308146-escape-charm-config-in-state

Fixed lp:1308146 -  charm config options with $ and . in the names now work

Since local charms can be uploaded via the API server, this issue was
introduced: charms with config options having "$" and/or "." in their
names caused notOkForStorage error from mongodb when trying to save
the charm config into the charms collection. See http://pad.lv/1308146.

Service settings were already treated properly (escaping $ and . on the
way into mongo and unescaping on the way out), so the fix uses the same
approach.

Tested live with a local environment and added a unit test for it.
Break pre-migration environment UUID chicken-and-egg scenerio

Multi-env state server related migration steps were relying on
functionality that needed upgrade steps to have run (so that
st.Environment() worked). This hack does just enough to allow to let
the upgrade steps run on the master state server.

Fixes LP #1370635.
Merge pull request #787 from mjs/stateserverinfo-uuid-premigration-hack

Break pre-migration environment UUID chicken-and-egg scenerio

Multi-env state server related migration steps were relying on functionality that needed upgrade steps to have run (so that st.Environment() worked). This hack does just enough to allow to let the upgrade steps run on the master state server.

This fixes LP #1370635.

@howbazaar may have a view on how to solve this differently but this fix solves the upgrade issue seen in CI and by users until he's back in.

http://reviews.vapour.ws/r/56/diff/
Factor out patchAPIClient test helper.