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 feel like it would look a lot better to move 'expected' closer to the actual assertion. And in this case c.Check is more appropriate. (Check should be used when you can reasonably do another check afterwards. Assert should be used if the state of the world becomes invalid when it fails. That way you can have a test fail and it tells you everything that was wrong, rather than run one, fail, fix it, next fail, fix it, next fail, etc.)

so
c.Check(filename, gc.Matches, "inline-backup-template\d*")

I'd also inline the 'backup.FilenameTemplate" because
a) it makes a clearer test, as you can see what pattern you're actually matching against
b) it gives you a little bit of "yes this string is actually valid". Someone can change: backup.FilenameTemplate = "%s" and all the tests still pass, even though it *really* isn't the template we would want to be using.