Make sure that all transactions created by TransactionsTestCase.testMaximumActiveTransactions() are closed.

This avoids IllegalStateException("Too many active transactions") thrown by tests executed afterwards.
Add a safeguard against unterminated transactions (works only for transactions createdy by calling AbstractTransactionTest.newTransaction)
Make all tasks created by service transition depend on unlock task, thus preventing that an object is unlocked or reverted before all tasks execute.

Failing to do so results in a service's rollback state edited by an executing task, or results in service being unlocked before it state is final for that transaction.
At TransactionControllerTestCase, commit outsiderTransaction to prevent transaction leakage.
Prevent hard to track results when container.shutdown fails, by invoking context.complete even if an error occurs.
Start creating a more flexible test structure for more complex service test scenarios.

Those scenarios include:
- performing several operations inside the same transaction
- rolling back or aborting a transaction
- running multiple transactions that edit different services
- running multiple transactions that edit a common set of services
- running multiple transactions that edit related services
- complex scenarios with a mix of the above scenarios
Start writing a test for rolling back service state.
Enhanced TransactionsTestCase.testMaximumActiveTransactions() fix.
fixing javadoc links
Renaming SynchronousListener -> CompletionListener and making it public.
Refactoring (enable/disable)Service from registry to ServiceController
Introducing TransactionalLock.
Introducing TransactionalLock Cleaner.
 * eliminated useless UnlockTask
 * simplified TransactionalObject
Fixing TransactionalObject race condition.
WIP: add support to multiple transaction stages on service start/stop