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
That makes sense.  I wasn't clear on the constraints on the provider storage URL stuff but was also trying to avoid that POST request stuff.  Any suggestions on how to make it work without using an HTTP-based client method?