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.)
Thanks for the pointer.  That's just what I needed.  And yuck!  Having to patch for testing usually implies to me that the API isn't quite right.  However, it will work here for the moment. :(