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.
Would it make sense to include the URL in BackupInfo and have createBackup populate that too? It seems to me createBackup has everything it needs to do this.