Update all clients for Facade Versions

This finishes off changing all of the Client code to support API Versions. This particular patch should just be the mechanical changes of rewriting all of that code to use the FacadeCaller paradigm.

Once this lands, then 'juju' will be version aware, though all the current facades just request version 0. However, it means we *can* do the right things wrt introducing new versions on the server and having new versions of the client use that, while still having the fallback code available.

The two patches will actually land in the same request, since you actually need both to pass the test suite, etc.
Nice approach!