Simplify creation of single thread used by event loop based Schedulers

Removes overhead of using a ScheduledThreadPool for the single thread used by the event loop based Schedulers. Explicitly creates a single thread and uses a minimal queue implementation so that execution of scheduled actions are serialized.

I've seen some spurious unit tests failures that I'm unable to reproduce, so a code review to point any concurrency issues would be much appreciated.

Also, if someone could point me to which JMH benchmarks that would be relevant for this change and how to run them, I can post some numbers to see if this change is worthwhile.