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 'header' type comments are not needed. Generally, the code should talk for itself. Test helpers for a suite of tests always come before those tests. It is clear where the tests start as all the function names start with 'Test'.