Reactive external scheduling of timers

This pr depends on https://github.com/iconara/ione/pull/20 which means that the "files changed" maybe confusing.

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.