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.
For jobs, this patch brings us to serializing only what changed.  For the backend, the existing serialization interface isn't really expresive enough for that.  I'm not sure if we should rework this so information about which job is changing can cross the abstraction boundary?