CachedThreadScheduler for use as default IO Scheduler

Here is an implementation of the CachedThreadScheduler discussed in #1140.

I've been testing this against my own web service using load tests and it holds up fairly well. There seems to be a bit more retention of expired event loops during high load than I like. So I would appreciate a code review to make sure I haven't missed any part of the scheduler/subscription life cycle. Or if there's any unintentional reference keeping event loops or scheduler Worker instances from being garbage collected.