WIP: Change backup to be websockets-centric.


Note: Currently this patch is incomplete (mostly just test coverage).  My intention for the moment is to get feedback on the approach before investing more time.

---------------------------------------

This is a slightly more focused version of #412 that also incorporates making the switch from POST-based requests to the websockets-based RPC.  In fact, this patch built out with that switch as the starting point rather than using the env-storage change as the starting point.  I also tried to build the APIs with an eye toward testability.

Key features:
* backup storage abstractions
* switch from file-oriented to storage oriented
* backup metadata
* addition of new backups collection in state
* switch from POST-based requests to websockets-based RPC
* addition of state API client method for backups

The file breakdown
----------------------
  Key files:
state/apiserver/client/backup.go -- (new) new API server method
state/api/backup.go -- (new) new API client method
state/backup/api/api.go -- (new) generic backup API stuff
state/backup/api/client.go -- (new) the underlying API client method implementation
state/backup/api/server.go -- (new) the underlying API server method implementation
state/backup/backup.go -- gutted and re-organized
state/backup/info.go -- (new) the backup metadata
state/backup/storage.go -- (new) the backup storage abstraction (and implementation)
state/storage.go -- (new) a more generic wrapper around the new backups MGO collection


  Secondary files:
state/backup/api/params.go
state/backup/sources.go

  Removals (cleanup):
state/apiserver/apiserver.go
state/apiserver/backup.go
state/apiserver/backup_test.go
state/apiserver/export_test.go

  Boilerplate:
state/apiserver/client/export_test.go
state/backup/api/export_test.go
state/backup/api/package_test.go
state/backup/export_test.go
state/backup/package_test.go
state/backup/api/export_test.go
state/backup/api/package_test.go
state/state.go

  Tests:
state/apiserver/client/backup_test.go
state/api/backup_test.go
state/backup/backup_test.go
state/backup/api/testing.go
I don't think the server really wants or needs to know what the user called the backup -- and if it *does* then surely it wants a description to attach to it in state (and report over the API), but not a filename. Surely it's up to the state server to pick good internal names, and the client can use whatever filename it wishes to store it locally, without any need for correspondence between the two?