Fix for non-daemon thread leak.

* ExecutorService created explicitly - replicates existing logic of using fixed size thread pool sized according to number of processors available
* ExecutorService ThreadFactory also gives meaningful names to created threads