Host state database

Converts the host state persistence system to use boltdb instead of a json flatfile.  Fixes #532.

Changes to state of a job are now updated individually, rather than requiring complete reserialization of all jobs.
This interface exists to optionally allow the backends to save per-job and global state. The `RestoreState` method is required and the backend will restore the regular job info (`map[string]*host.ActiveJob`) whether or not internal state is in use.