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.