healthy prototype

1. each framework reports its liveness to /{taskID}/healthy with TTL

2. each framework watches on its parents and children's healthy 

3. if a framework detects a failure, it tries to report failure to /failedTasks/{taskID}. taskID is the failed task it detects. the failure report is a hint. and there might be multiple reports for a failure. 

4. standby nodes watch on /failureTasks/{taksID}. If it get a hint, try to get the task slot. if fails, re-watch again. if succeeds, become a framework with that taskID and call recover.