Customizable futures

This adds a `_future_factory` attribute to `EnhancedThreadPoolExecutor` that subclasses can use to overload the type of future used by the executor.

An alternate implementation is to pass the factory to the initializer. I'm open to interface suggestions.

@sjagoe, you've already created a custom future. What do you think of this idea? I prefer this to rewriting the `submit` method every time a custom future is needed.