Windows: update loop time lazily

We call uv_update_time() whenever we think the loop time should be updated.
But we might not need to read the time after every update, and the update
operation has non-negligible cost.
So I am making uv_update_time() invalidate the loop time. The time will be
actually updated only on the first call to uv_now() after it's been
invalidated.
The purpose of uv__time_forward is to ensure that when we finish polling with a timeout, the timeout value is reflected in the loop time (because as we saw, GetQueuedCompletionStatus can return a tad early). "the timeout value is reflected in the loop time" is equivalent to saying that the difference between the next time the time is read (with uv__loop_time()) and the last time it was read must be at least 'msecs'. This code satisfies this requirement.