Introducing TransactionalLock.
Introducing TransactionalLock Cleaner.
 * eliminated useless UnlockTask
 * simplified TransactionalObject
Fixing TransactionalObject race condition.
eliminating useless TransactionalObject.lockWrite() method parameter
removing duplicit assert calls
Eliminating TransactionalObject.writeLocked() method parameter.
eliminating slow wait-and-notify mechanism from TransactionalObject - first thread that enters synchronized section configures cleaner
Replacing Transactions.waitFor() wait-and-notify mechanism with completion listeners approach
Eliminated InterruptedException usages
Rewritten TransactionalLock.lock() method to be completely asynchronous.
Previous implementation was relying on wait-and-notify builtin mechanism in
Transations.waitFor(txn1, txn2) method.
Transaction.canCommit() method must throw ITSE if transaction is not in prepared state
forbid locking outside of execute phase
Eliminating Committable interface + task controller COMMIT_WAIT & COMMIT phase.
Task cancellation support.
If task is cancelled all its dependents are cancelled, but not its children.

If cancelled task T is entering TERMINATE_WAIT state,
it renounces all its children and forwards parentage to transaction.
Once task T renounced its children it moves to TERMINATE state and
transaction undertakes T's children and their orchestration responsibility.
Transaction.abort() can be called only when transaction is in PREPARED state
Always properly rollback cancelled executing task.
Change Service interface, so that now we have one start method for each trait (executeStart, validateStart, commitStart and rollbackStart), and do the same for stop (executeStop, validateStop, commitStop, and rollbackStop).

Update tests accordingly. RollbackServiceStateTestCase is marked with @Ignore as it presents broken tests and is under review.
Commit and rollback state change only a single time, and only for whichever state change is going to be committed.
Make cycle detection run only for down services