Add ServiceStartExecutable, ServiceStopExecutable, ServiceStartRevertible, and ServiceStopRevertible. Delete Service interface.
Add tests for enabling/disabling registries/services in separate transactions (as these new tests will reproduce different scenarios, internally, than the corresponding pre-existing tests).
Test tidy up: remove print statement from RollbackServiceStateTestCase, and properly ident statement at AbstractTransactionTest
Eliminated TestValidatable utility class
Transaction.adoptGrandchildren() must be called outside of
TaskControllerImpl.renounceChildren() synchronized section.

We use !holdsLock(this) assertions in TaskControllerImpl notification methods
as useful deadlock prevention. If Transaction.adoptGrandchildren()
could be called from synchronized section, these assertions would violated.
Transaction.topLevelTasks iteration must be thread safe - it can be modified concurrently by Transaction.adoptGrandchildren() method
fixing race condition - Transaction.adoptGrandChildren() must propagate ROLLBACK requests to adopted children.

Usecase:
It is possible that transaction received rollback() request but it didn't notify all topLevelTasks yet. Such information may get lost during adoption process.
Rollback transaction eagerly plus extend the test suite to cover this feature.

If transaction rollback is requested, we're sending ROLLBACK request
immediately to all already registered topLevel tasks. If new tasks
are added to transaction, they're asked to rollback during installation phase.
Note that we cannot immediately reject new tasks when rollback() was requested,
because such tasks may be installed from some transaction Executable component,
so it is still valid to accept new tasks if we're still at ACTIVE state.
Transaction moves from ACTIVE to ROLLBACK state once all transaction tasks
are executed.
support for easier debugging - to know which AsyncTask belongs to which Transaction or TaskControllerImpl
Refactoring Transaction and TaskControllerImpl state machines.

Fixing state machine counters plus making sure all
interaction methods are called outside of synchronized
section to prevent deadlocks.
Removing Validation related classes from public API - they will be removed later
Introducing TaskControllerImpl.FLAG_SEND_CANCEL_REQUESTED flag.
Introducing Transaction.FLAG_SEND_CANCEL_REQ flag.
Delete no-longer used SetTransactionalStateTask.
Fix ServiceControllerImpl.TransactionalInfo.scheduleRemoval: checks for state replaced by checks for transactionalState
At AbstractServiceTest.assertNoCriticalProblems, print the problem message and stack trace, when available
Fix undemand logic (undemnad was being invoked at more than one point, thus causing the counts to get inconsistent). Also:

- replace the up demanded nomenclature, it no longer makes sense now that down demanded is removed
- add TaskFactory parameter to methods related to setTransition method: it is now needed
- remove uneeded parameters from ServiceController.TransationalInfo.isStopping/Starting methods
Remove Demand/UndemandDependenciesTask.
Don't send any notification event if task controller installation fails. Such false event would violate parent counters.
Remove assert check for locking from ServiceControllerImpl.isMode