This resolves #58.
We previously would just kill the worker usually in this condition, but there was a rare situation where we would run on an interrupted thread (must be interrupted after added to availableWorkers, and given a task before it checks for the next task).

This change makes it closer to ThreadPoolExecutor's behavior.  We reset the interrupted status always before starting the task, and will only kill the worker if the thread pool is trying to shut down.
Fix for an intermittent unit test failure
More verification in unit tests around interrupting threads used in the scheduler
Merge pull request #59 from jentfoo/unstable_staging

Unit test improvements and issue #58 resolution