idle: allow zero timeout
Prior to this commit, setting up a zero timeout resulted in a timer that never expires, which isn't particularly useful.
This commit allows setting up timers that expire immediately, which is useful to immediately enter idle state.