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.
Yeah, the name parity is definitely silly at the moment.  I'd like to have regular-looking `Marshal` and `Unmarshal` methods... the current `RestoreState` method looks a little unlike those though because of the other parameters.  And if we rearrange this interface so that the state-saving method takes additional hints about subsets, it looks even less like the `Marshal() (byte[], error)` one might have expected.  Is there a name for this pattern that feels familiar?  (`ComplicatedMarshal`?  heh.)