Timer set fixes

This fixes #216 and adds a UT for it. I also think I spotted a possible race condition (where we peek from a queue, do something with that task, and then pop from the queue, without guarding against the possibility that the head of the queue has changed since we peeked).

I checked that:
* `rake spec SPEC=spec/concurrent/executor/timer_set_spec.rb` passes
* `rake spec SPEC=spec/concurrent/executor/timer_set_spec.rb` fails without my commit 894ac23