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.)
This doesn't appear to be exercising the code path it is describing in the test name. It is the same test as DigestHeaderEmpty, not one that takes a SHA and sees that we notice when that sha doesn't actually match the content.