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
These interfaces are actually part of the effort to break some import cycles, though as we both agree interfaces generally are a good idea in inter-package situations like this regardless.  I definitely want to avoid any direct interaction with state here if possible, and these interfaces allow that.  Furthermore they allow for better testing and for different storage backends.

Now, how the implementations of the interfaces interact with state and the external/internal boundary are certainly concerns worth mentioning.  I'll fix that.