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
eliminated ServiceRegistryImpl dependency on TransactionalObject - getOrCreateRegistration() now throws Interrupted & Deadlock exceptions
eliminated Registration dependency on TransactionalObject - new Registration.lockWrite() method reports exceptions instead of throwing them because this code is called indirectly via executors
Eliminated ServiceControllerImpl dependency on TransactionalObject.
 * TransactionalObject have been eliminated completely with this commit.
 * All useless test utilities have been eliminated, namely
   - DisableRegistryTask
   - DisableServiceTask
   - EnableRegistryTask
   - EnableServiceTask
   - RemoveRegistryTask
   - RemoveServiceTask
   - ShutdownContainerTask
 * ServiceRegistryImpl was fixed to be locked whenever its internal state is going
   to be changed, that is not only during creating new Registration object, but also when
   enabling, disabling or removing the registry.
 * ServiceControllerImpl introduced two locking methods
   - writeLocked() this method propagates DeadlockException & InterruptedException upstack
                   because it guards publicly available API methods users can call
   - writeLockedSilently() this method reports problem via transaction report, because
                           it guards internal methods that are executed via executor threads
                           This method provides fast fail detection (via boolean return flag),
                           allowing us to terminate processing once problem have been detected.
 * API have been updated to throws DeadlockException & InterruptedException where appropriate.
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.