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.
Added versions to Agent API.
Added forgotten params.
Merge branch 'master' of https://github.com/juju/juju into agent-api-new-version-for-networker
Merge branch 'master' of https://github.com/juju/juju into agent-api-new-version-for-networker
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
Merge branch 'master' of https://github.com/juju/juju into agent-api-new-version-for-networker
Fix typos
Merge branch 'master' of https://github.com/juju/juju into agent-api-new-version-for-networker
Minor fixes after first review.
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.
state: refactor Storage

- State.Storage() no longer returns an error
- state.Storage no longer has a Close method

Resource lifetime is now managed within each
method call. Get is a special case, where the
returned ReadCloser manages the lifetime of
the mgo session (it is closed when the ReadCloser
is closed).
Change state.Storage usage sites
fix comment, add tests
Merge branch 'master' of https://github.com/juju/juju into agent-api-new-version-for-networker