Move service disable/enable code to tasks, thus making enable/disable revertible operations
Make Registration.removal revertible.
At ServiceControllerImpl.reinstall: reset dependents for all dependencies.
Check that no intermediate states are being set to ServiceControllerImpl.state by writeUnlocked
Remove TransactionalObject and snapshots. Also, adapt lock usage to the standard if (lock.tryLock(txn)) { // do sync code} else {lock.lockAsync(txn, new LockListener() {// do sync code}"
Add SimpleService interface.

Add proper handling of simple service start and stop to Starting/StoppingServiceTasks, and create a new
SimpleServiceTestCase.
Fix bug that caused inconsistent ServiceControllerImpl.unsatisfiedDependencies count.

This fix garantees that the dependencyUp and dependencyDown notifications are sent only once, as opposed
to before, when a notification could be sent more than once if the new dependent were added at the exact
same time the service is starting (new start task already created, but service is still starting).
When user tries to use a terminated transaction with any of the service API methods, throw an InvalidTransactionStateException
indicating that the transaction is terminated.