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.)
Given that the server API has always returned the Digest header something must be quite wrong for it to be missing. There could even be something malicious going on. 

IMHO I think the backup file should be deleted if the header is missing or hash doesn't match (perhaps with a command line option to override that behaviour).