Fix IDLE-related infinite loops by moving stateful calls to IDLE.timer.
The game currently has several infinite loops, and the stack trace is always a variation on the same pattern that units go through IDLE as a default state, immediately try another order (possibly entering a new state), failing, and goes back to IDLE.
IDLE.Timer is a general workaround for this issue. It wastes a turn every time a unit goes idle, so should a better solution be found for the general problem of infinite loops in UnitAI, it should be removed.
This revert rP22059 which was intended as a safety net, but couldn't protect againt infinite loops between two different states.
Fixes #5460
Differential Revision: https://code.wildfiregames.com/D2041