This fixes #43.  The issue was that when the park was being called, the thread had already been interrupted, thus making the park return immediately.  I went ahead and improved a few other places where we can be handling interrupted exceptions a lot better.
Fix for possibly leaking a submitted job due to the recent fix for #42.  By letting the interrupted worker get back into the pool, it could have recieved a job right before it killed itself.  This also fixes a very rare condition that could cause a duplicate decrement of the current pool size (thus making it think that the pool is smaller than it actually is)
Merge branch 'master' into experimental-more_concurrent_scheduler