AbstractExecutorService introduced two protected methods in Java 1.6 to
allow an ExecutorService to use customised RunnableFuture implementations
other than the default FutureTask.
This class requires a Factory to create the RunnableFuture, encapsulating
any existing ExecutorService.
This allows an ExecutorService to be provided by Configuration or a pool
to be shared without requiring that all implementations also share the same
type of RunnableFuture.