Use TQueue instead of TChan

...because a TQueue has higher throughput.
Factored thread pool management into dedicated file