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.)
I wonder if we actually want to be using os.OpenFile() so that we can pass O_EXCL. Otherwise os.Create will open an existing file and just truncate it.
I'm certainly willing to discuss the point, but it feels like you shouldn't use this name to overwrite an existing backup file. They seem a bit precious. (And if you don't want it, you *could* just delete it manually).

Then again, if we *did* want that behavior, we should probably open the file before we make the RPC, because having the remote side do all the work to create the backup, and then just throwing away the data because we had a filename collision locally doesn't sound great either.

Thoughts?