use MSCLogger to throw exceptions
Simplifying transaction state engine - eliminating good-for-nothing PREPARE_DONE, COMMIT_DONE & ROLLBACK_DONE transaction flags.
The transaction listener is always initialized with dummy NOTHING_LISTENER if user provided listener is null.
eliminating magic constant - use transaction STATE_MASK everywhere
Implementing missing bits - always free transaction id if transaction is reverted or committed.
This allows creation of new transactions when previously created transactions were finalized.