reviewed and fixed transaction methods visibility
At TaskController, task should no longer depend on dependencies validation to consider validation concluded.

Also, add a test that would result in a hang without this fix.
At TransactionalObject, make sure that the current transaction lock is not a terminated transaction.
At Registration.removeDemand: fix bug at upDemandedByCount > 0 check
Make sure started new services are reverted in case the transaction is rolled back
Fix the order of dependency among stopping service tasks: undemand dependencies task must execute only after service is stopped.
eliminating NOTHING_LISTENER
removing System outs
Introducing Prepare Commit & Rollback phase specific listeners
Fixing unnotified listener issues. The following usecases have been fixed:

Usecase 1 (ACTIVE -> PREPARING -> ROLLBACK -> ROLLED_BACK)

If rollback() have been called on transaction
while prepare() was in progress it might result
in prepare listener not to be notified when
transaction have been rolled back.

Usecase 2 (ACTIVE -> PREPARING -> PREPARED -> ROLLBACK -> ROLLED_BACK)

If both commit() & rollback() (in this exact order) have been called
on transaction while prepare() was in progress
it always resulted in commit listener to be lost
and not to be notified about transaction termination.

Usecase 3 (ACTIVE -> PREPARING -> PREPARED -> ROLLBACK -> ROLLED_BACK)

If both rollback() & commit() (in this exact order) have been called
on transaction while prepare() was in progress
it always resulted in rollback listener to be lost
and not to be notified about transaction termination.
Introducing user fiendly transaction result state methods.
Use transaction listener results for XA & Arjuna mappings
Every XATransaction have to be registered in global transactions registry too.
Splitting rollback() to two separate methods, abort() & rollback().
 * abort() can be called only after prepare()
 * rollback() can be called only prior prepare()
Fixing MSC2 API generics issues.
Disallowing one-phase commit usecase.
Stop reasoning about previous transaction state.
Introducing new EXECUTE_CHILDREN_WAIT task controller state.
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)