every dependency can be added only once
Revisited TaskControllerImpl.dependentAdded() method.
 * We allow dependents adding only in EXECUTE_WAIT, EXECUTE, EXECUTE_DONE, TERMINATE_WAIT & TERMINATE task controller state.
 * Fixed dependentAdded() switch statement accordingly.
optimization - removing unlikely() method
 * it saves one wrapping method call around boolean expressions
 * if statements without unlikely() are also human reader friendly
 * 'if statement' followed with 'throw new' phrase is sufficient
   to recognize that such condition(s) is(are) unlikely
Propagate ROLLBACK_REQ from parent to chilren tasks
When task controller child is terminated, decrease both unfinishedChildren & unvalidatedChildren.
The idea of the fix is the same as the one documented in commit 0ba5c2f44951472dc0a838edfb0cf4c9950dcdbf
Children should start committing after parent task is committed.
child tasks can be added at EXECUTE state only
Implement child cancellation if parent task is cancelled.
Parent task sends VALIDATE_REQ, COMMIT_REQ and ROLLBACK_REQ to its children.
Thus if parent dies, there's nobody to command these orphans :(

I also removed thread.interrupt() calls - it was sometimes blocked
in interrupted0() method for unknown reason causing JVM to freeze.