failover option & standby

This issue is to take over #93 .

Here is a list to finish before merge.
- [x] Failover option
- [x] Standby
  - [x] Controller acts as failure detector and reporter
  - [x] Make sure standby node is waken up on other nodes' failure
  - [x] correct standby WaitFailure behavior (in the second section below)
- [x] test failure in slave ParentDataReady()

More details for each part:
### Failover option
The idea is that to have a simple, uniform way to do random failure at any task function. For example:
```Go
func (t *dummyMaster) SetEpoch(epoch uint64) {
        ...
	if t.testablyFail("SetEpoch", strconv.FormatUint(epoch, 10)) {
		return // failure happened
	}

```
It hides the details of closing framework, releasing resources inside.
The second goal is to have configurable failure options:
```Go
	Config: map[string]string{
			"SetEpoch":  "fail",
			"failepoch": "1",
			"faillevel": "100",
		},
```
For example, the "faillevel" is a number between [0, 100] the probability to fail.

### Standby
The first thing to change is to make controller detector and reporter of any task failure. A change in health dir
```
//   /{app}/healthy/{taskID} -> tasks' healthy condition
```
The second thing is to change current regression framework failure test to use standby instead of sleeping for ttl long to pass tests.

TODO: Currently WaitFailure() in standby watched the any node getting reported in /failedTask dir. The correct procedure is that we would 
- [x] iterate all failed tasks, try occupy any,
- [x] delete failed if succeeded on any node,
- [x] otherwise watch any new node getting reported. 

### Slave ParentDataReady random failure
Change regression_framework_test to take unlimited failure.
```Go
    go func(np <-chan bool) {
		for flag := range np {
			go drive(t, job, etcds, numOfTasks, taskBuilder)
		}
	}(nodeProducer)
```
This will enable probabilistic failure testing.
The slaves would fail in a probable manner at ParentDataReady() method. Despite any number of failures, regression framework test will end with the same result as it never had any failure.
remove the first level go func()