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.)
The comments are just flagging the structure of the file. I don't see a 
precedent for this in other test suites - all of which have a similar 
structure to backup_test.go.

> In state/api/backup_test.go:
>
> > +	s.PatchValue(&apiserver.Backup, succeed)
> > +}
> > +
> > +func (s *clientSuite) setBackupServerError(err error) {
> > +	fail := func(pw, user, dir, addr string) (string, string, error) {
> > +		return "", "", err
> > +	}
> > +	s.PatchValue(&apiserver.Backup, fail)
> > +}
> > +
> > +func (s *clientSuite) removeBackupArchive(filename string) {
> > +	s.AddCleanup(func(*gc.C) { os.Remove(filename) })
> > +}
> > +
> > +//---------------------------
> > +// Success tests
>
> While I agree they aren't strictly necessary and the function names 
> give sufficient information, I will argue that the comments make the 
> code more readable. I've grouped the tests/helpers and labeled the 
> groups. Do you find the comments to be a problem?
>
> —
> Reply to this email directly or view it on GitHub 
> <https://github.com/juju/juju/pull/200/files#r14457742>.
>