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.)
Why would it panic?

Keep in mind that at this point I want to make sure the backup file (if there is one) is queued up for removal before I do anything that would stop execution (and leave the file cluttering up your filesystem after running the test).