moved the timer expiration/execution logic from iomux_loop() to iomux_run()

to ensure running  timers also when not allowing iomux to take over the runloop
(but called manually through iomux_run())