Replace TransactionManager thread management with thread pool

Thread management is moved to ThreadPoolExecutor with custom
TMThreadFactory which is responsible for thread "session id"
assigment, start and elapsed time measurement.
On input space registered is listener so there is no thread
contention. It is moved to BlockingQueue and it is probably
better implemented.
Supported are 2 queuing methods:
 * Direct handoffs - with SynchronousQueue
 * Unbounded queues - with LinkedBlockingQueue
For more info see
http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html

Configuration:
If sessions equals to max-sessions then 'Direct handoffs' method is
chosen else 'Unbounded queues' where core pool size is set with
max-sessions.

Signed-off-by: Robert Demski <drdemsey@gmail.com>