Select timer timeout

The default `tick_resolution` timeout is 1 second which means that timers that are scheduled under periods when no IO activity is present will only get the chance to run once every second. This pr adds a bit of intelligence to the value of timeout in the `IO.select`call. Specifically if timers are scheduled we will disregard the `tick_resolution` and only wait for IO until it is time to run the first timer.
I would prefer if `Scheduler` had a method that returned the time to when the next timer expires. Something like `#next_expiration_time` (which would return an absolute time) or maybe simply `#timeout` (which would return a relative time).