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'm not sure if we captured this for compatibility purposes, but since 'backup' is a new API anyway, you really want to be posting to https://address:port/environ/UUID/backup and not just /backup
We have the latter methods for backwards compatibility, but that isn't needed here.

In fact, we probably shouldn't even *expose* backup at "/backup" anymore.