Feature/issue 487 better worker identification

* Redesign of the heartbeat monitoring worker
* Addition of a Redis storage backend.
* Explicit configuration for tracking workers

In every verification interval (30 seconds), the new monitor tracks the (hostname, pid) pairs for each twisted process that checked-in. These pairs are then used to verify that each worker species has enough processes running.

Although it hasn't been implemented yet, by comparing sets of pairs from two consecutive intervals, its easy to determine the churn rate, i.e. the number of processes that have died, rebooted, or that have been added to the system.

In the previous version, we kept track of changes to a workers state, like "Worker went missing", "Worker is alive now", etc, as a list of events. While that was a good idea at the time, it doesn't really fit well in the new model where a "worker" is essentially a tag identifying an aggregate set of uniform processes of the same class and config. So that has been discarded, and for now, we simply just set a few fields in redis to indicate that a worker species has less than MIN_PROCS running. 

Workers still require a 'worker_name' config field and a system-id set via the '--system-id' option.

The JSON-RPC component in the monitoring worker has been replaced by a Redis backend (vumi/blinkenlights/heartbeat/storage.py). This should lessen the load on the monitoring worker (as it does a lot work already) and preserve state across worker reboots.

The monitoring worker also needs to be configured to explicitly track workers worth caring about. Perhaps in future, a degree of auto-discovery could be implemented.

Here is a sample config: 

    deadline: 30
    
    redis_manager:
      key_prefix: heartbeats
      db: 5

    monitored_systems:
      vumi_go_prod_1:
        system_name: "vumi-go-prod-1"
        system_id: "vumi-go-prod-1"
        workers:
          twitter_transport:
            name: 'twitter_transport'
            min_procs: 10
          wikipedia:
            name: 'wikipedia'
            min_procs: 1