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.)
These comments are not needed. It should be evident from the function name what we are testing and if it is expected to succeed or fail.

This goes for all the 'header' type comments in this file.