Add the client side of the backup API.

This builds on the work of Michael Foord.  I've reorganized the code a little, added tests and factored out the raw RPC code from the backup client code.  (The raw RPC can later be re-used by the other 2 client methods that currently duplicate the code.)
Backup should not be a GET request, since GET is considered Idempotent, and Backup is definitely not idempotent.
(for a point of reference, consider that web crawlers will generally follow all GET requests, but not POST resquests. While we won't have a web crawler here, I usually use that mental thought to determine if it is sane to use GET or POST in a given request.)

Also, even if we *did* change this, it would be a major API breakage that shouldn't happen casually in a new version of the Juju server. In this case *maybe* we could consider it ok if we didn't have a client capable of talking to the new API, but it is definitely something we need to be careful of breaking in the futuer.