Reschedule the timer event after processing timers. Fixes #458.

If the libevent timer fired too early, this would cause all timers to hang until some timer was rescheduled. With this change, the timer event will be rescheduled to fire just after the first timer expires and thus always keep the timer processing going.