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.
About clearing out old ones - yes, I meant to write the endpoint for that and just forgot.

As for using Entity/Entities .... yes I guess so.  If we have to pass a struct rather than a bare string or slice of strings.  Certainly making a bunch of structs with a single string is not really useful.

Certainly deleting backups should be a bulk call.  And calling backup on a bunch of environments makes sense too.

We can certainly do some testing to see what kind of timeframes we get on crappy hardware for large mongodumps.   I had assumed large databases might take a long time to dump (many minutes), but maybe that's not true.  If we can reasonably assume a dump takes a minute or less, then cancelling is not really useful.

We do have to make sure we handle the case where someone control-C's juju when they see backup isn't returning immediately.  I think it would be useful to have an async option (either by default or with a flag).