Remove loads of sleep statements in UTs

This removes all the calls to sleep() in spec/concurrent/executor/thread_pool_executor_shared.rb, replacing them with Event wait/set or CountDownLatch calls in order to block for the minimum sensible amount of time.

Consistently brings `spec/concurrent/executor/{ruby,java}_thread_pool_executor_spec.rb` down from 11s to 5s for me (across MRI, rbx and JRuby), so I think it's worth doing.
I'm comfortable with us starting to use more test doubles now. In the beginning there is no way I would have felt comfortable with this library had I used a lot of mocks. Given how much we've grown, I'm a lot more comfortable with our ability to mock appropriately and still validate the real concurrent behavior.