This further improves the fix for #43.  Previously if the worker had an interrupted task, we would then kill the worker and wait to create a new task.  With this implementation, we will only kill the worker if the thread pool is shutting down.  Otherwise we clear the interrupt, and continue normally.  I also added unit tests around this behavior.