Add a juju restore subcommand.

This is the CLI portion for the work we are doing on cleaning up the juju-restore plugin (and turning it into a normal command).  For now it just stubs out the actual call to the restore client.
Is the actual API call just a path? Doesn't have to actually upload the content back to the state server? I suppose at the APIClient level it could be talking in terms of a path and then the APIClient itself would be the one opening the file and uploading it?
It almost feels like the APIClient should be taking an (io.Reader, size(?)) and then just responsible for putting the bytes onto the wire.
But I'm certainly not settled on it. It just seems like APIClient should be a little bit thinner around the actual API part of the code (otherwise APIClient.Backup() needs to be able to return io.ErrNotFile, and those sorts of errors, which doesn't quite fit with giving API errors as well.)

I'm certainly willing to be convinced otherwise, that is just my initial feeling.