Auto 862 combined health check (ready for review)

This lets multiple objects with `health_check` to be added to a health check object, and knows how to aggregate the whole thing.  This way the scheduler health check (and in the future the supervisor health check) can be added to the health check results.

Without the scheduler health check, this is what gets returned when the health check endpoint is hit:

```
{
    "healthy": false,
    "scheduler": {
        "details": {
            "reason": "invalid health check object"
        },
        "healthy": false
    },
    "store": {
        "details": {
            "cassandra": true,
            "cassandra_time": 0.031091928482055664,
            "zookeeper": true,
            "zookeeper_state": "CONNECTED"
        },
        "healthy": true
    }
}
```

And when that PR is merged, this is what gets returned:

```
{
    "healthy": true,
    "scheduler": {
        "details": {
            "buckets": [
                1,
                2,
                3,
                4,
                5,
                6,
                7,
                8,
                9,
                10
            ],
            "old_events": []
        },
        "healthy": true
    },
    "store": {
        "details": {
            "cassandra": true,
            "cassandra_time": 0.010842084884643555,
            "zookeeper": true,
            "zookeeper_state": "CONNECTED"
        },
        "healthy": true
    }
}
```