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 fine with leaving it as POST.  I made the change because we're not making any change on the server, but rather requesting a resource.  Also, good point about API compatibility.  I wasn't thinking about it and haven't really been exposed to much release cycle concerns yet.  As far as I know, /backup is new in 1.20 (maybe we should yank it).