state: make InferEndpoints take varargs

Most of the callers, usually the tests, were having to construct a []string, just to satisfy the contract of the method.

Make the method take a varargs ...string which is consistent with other Relation methods.
Wire up placement directives to EnsureAvailability api
Fix facade version detection
Code revew fixes
Rework how support for legacy installs is handled
state: remove unused return value from backingDoc.remove
Fix client fallback
Fix typos
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.