Various task ordering fixes and implemented missing parent-child interaction bits.

In previous implementation it was possible that transaction entered prepared state
even if some of its children task validations were not yet finished. The reason
was child validation requests were sent too late and we didn't wait for them to be finished.

We're fixing this by introducing new VALIDATE_WAIT task controller barrier state
where we're waiting for all children to finish their validation before reporting
validation is done to parent task.

According to our IRC discussion with David I decided also to order the validate phase
like from dependent -> dependency PoV so also from parent -> child PoV.
The benefit we're getting from this well defined validation phase orderings is
it will prevent long executor queues if there are hundreeds of ordered tasks
in the transaction. Thus since now on the following task orderings are guarenteed:

For dependent -> dependency relationship:
 * dependency executable is called first, dependent executable second
 * dependency validatable is called first, dependent validatable second
 * dependency committable is called first, dependent committable second
 * dependent revertible is called first, dependency revertible second

For parent - child relationship:
 * parent executable is called first, child executable second
 * parent validatable is called first, child validatable second
 * parent committable is called first, child committable second
 * child revertible is called first, parent revertible second

Detailed fix description:
 * Introduced new VALIDATE_WAIT task controller barrier state.
   The new validation phase ordering is like this:
   EXECUTE_DONE -> VALIDATE -> VALIDATE_WAIT -> VALIDATE_DONE where:
    - we're moving from EXECUTE_DONE to VALIDATE state if and only if
      all our children and dependencies were executed plus (and this is new)
      all our dependencies were validated
    - when entering VALIDATE phase, we're starting our validation
    - we're moving from VALIDATE to VALIDATE_WAIT once our validation is finished.
      On entrance to VALIDATE_WAIT we're sending VALIDATE_REQ to our children
    - we're moving from VALIDATE_WAIT to VALIDATE state if and only if
      all our children finished validation
    - on entrance to VALIDATE state we're sending VALIDATE_DONE notification event to our parent
 * Modified ROLLBACK_WAIT task controller barrier state.
   On entrance to this state we're propagating ROLLBACK_REQ to our children.
    - we're moving from ROLLBACK_WAIT to ROLLBACK state if and only if
      all our dependents have been terminated and all our children have been terminated
Various test case fixes and enhancements:
 * implemented initial task child test cases
 * renamed some test cases
 * fixed transient failure in TransactionsTestCase
refactoring - introducing nextState() method