Better handling of resources for PoolFiberFactory executor services

When a PoolFiberFactory is created with some ExecutorService, not only does the factory need to be dispose()'d, but the service needs to be shutdown separately. This PR fixes several places that wasn't happening. In cases where the pool was only used to create() a single fiber, ThreadFibers have been used instead.