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.
I think we should evaluate the impact of calling `persist()` inline when state changes happen, it currently is not because I felt the impact of serializing and saving the JSON for each state change was too much.