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.)
Judging by the feedback I've gotten, I think folks are just looking at it as regular HTTP requests (perhaps even RESTful) rather than as RPC.  I called it "raw" to distinguish it from the normal RPC (JSON over websockets) that we do for most of the rest of the API.  If "raw" implies direct low-level requests then I agree a better name would be better.