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.
Same logic as before this change: because of uv__time_forward(). the current time (new_time) could actually be lower than cached_time, if GetQueuedCompletionStatus returned early.