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
This looks like it's intended for just dumping stuff directly into state? Please don't do that: add backup methods and types in state (which would be a great isolated PR...) and convert between the external and internal types inside there. One of my persistent nightmares involves types defined outside state that just get slapped into the DB without a translation layer -- it means that code changes outside state can transparently turn into magical surprise schema changes.