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()