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 can see how I made that confusing.  The point is that the Digest header does not start with "SHA=", so the SHA digest is therefore missing.  However, the error *would* be more clear as "unrecognized Digest header, expected 'SHA='".  I'll fix that.