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.

When scheduling timers from outside the Io::Reactor the reactor may currently be fast asleep in a `IO.select` call. Therefore we should unblock and run `scheduler.tick` once more to run the recently added timer if the added timer timeout is shorter than the earliest present timer or if there is no present timer.
It could also be argued that it was a bug that you were able to schedule timers with negative timeouts before and that zero or less should result in an exception. But I think that since the reactor needs to handle the case when the time has already expired when it is inspected that negative timers are fine.