Reorganize heartbeats storage schema

Read performance from the Redis datastore was dog slow. The latencies for all the individual Redis calls added up significantly, to the extent where the dash was unusable.

What we have done now is agglomerate data for all workers in a system into a single JSON blob. That includes the metadata on hosts.

Issues are still recorded separately. The dash knows whether to pull issue data by inspecting other metadata in the big JSON blob.

We include a timestamp in the redis storage, indicating when the data was last refreshed.


New storage schema:

 * Timestamp (UNIX timestamp):  key = timestamp
 * List of systems (JSON list): key = systems
 * System state (JSON dict):    key = system:$SYSTEM_ID
 * Worker issue (JSON dict):    key = worker:$WORKER_ID:issue