Add a variant of waitForTimer that does not use currentDateTime and therefore does not update every second
By keeping this information separately in the IWorld we can use it in the function that determines the timeout (timeout
in iTasks.Engine). That way the task isn't kicked every second, which improves performance.