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.
Tempfile gets included somewhere in the test suite before running this file which means it cannot run in isolation without the dependency. IE `rspec examples/motd_server/spec/ione/motd_server_spec.rb` fails without this change