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'm not sure we should be using direct URLs to provider storage anyway -- don't we want to access them via the API server itself? And, yes, given that the API server addresses may themselves change, we should be calculating that URL on the fly when someone requests info about a given backup.