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.
Which seems to fit the abstraction better: having the host state demand job state from the backend; or, having the host state supply a bucket (or json encoder, or other map-like structure) to the backend?

At the moment our only backend of note seems to only have state that maps directly onto job IDs, but I'm not sure that's something we should always presume?

Relatedly, should we do a moment of namespace planning now so varing backends won't tread on each other's toes (or is that a non-concern because the host database can be reset in case of a major operation like swapping backend)?