Fix pause/cancel bug when chained with then/success/catch.

This pull request will allow chained task to `pause`/`cancel` its parent task.

For example,

```
let task3 = task1.then { ...
    return task2
}
```

`task3.pause()` will invoke:

- `task1.pause()` if `task1` is still running
- `task2.pause()` if `task1` is either fulfilled or rejected & `task2` is still running

and so will `cancel()`.

FYI, bug 568e012 was discovered when I was adding new retryable feature `try()` in 9438564 #9.