WIP: Change backup to be websockets-centric.

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 abstraction
* switch from file-oriented to storage oriented
* backup metadata
* addition of new backups collection in state (mostly not started yet)
* switch from POST-based requests to websockets-based RPC

The file breakdown
----------------------
  Key files:
state/apiserver/client/backup.go -- (new) new API server method
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)

  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

  Tests:
state/apiserver/client/backup_test.go

--------------------------
Currently this patch is incomplete.  However, the intention for the moment is the get feedback on the approach before investing more time.
They trigger a request through the API client.  The mocked out part is the actual backup functionality, which we don't want to happen.  Everything else gets tested.  And that functionality is tested more thoroughly elsewhere (under state/backup/api).