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.)
While I agree they aren't strictly necessary and the function names give sufficient information, I will argue that the comments make the code more readable.  I've grouped the tests/helpers and labeled the groups.  Do you find the comments to be a problem?