Stub of backup api

This is a stub of the backup API that I am proposing for general comments.  The big question right now is how we download backup files.  I don't know how to do that through our current API infrastructure, since we would need to stream them off of disk, we can't just return a []byte in a results value, since a backup may be multiple gigs of data.

I think William will also smack me for not making this a bulk call, but I'm not sure how one would make this bulk, so feel free to let me know.

The general idea is that backup will run async, creating a backup file.  While it's in progress ListBackups will return the name of that backup as an in-progress backup, which you can cancel if you wish.  Once the backup is done, the file is moved to a canonical place on disk, which is where the list of backup files is read from and returned from list backups.
As mentioned, I think this goes onto the HTTP portion of the API, you can look in state/apiserver/apiserver.go for where the HTTP mux is set up.