win: match behavior of uv_backend_timeout with unix

This rearranges some of the code in `uv_run` that computes the timeout value so that it more closely matches the structure (and function names) of the equivalent on unix. This enables the use of `uv_backend_timeout` for using libuv as an embedded event loops (for experimenting with libuv-Gtk integration. I fallback to a moderate rate of polling when uv_backend_fd returns -1, and use this function to give an upper-bound on that timeout.)

Note: this removes the call to `uv_update_time(loop)` from `uv_get_poll_timeout(uv_loop_t* loop)`, for consistency with unix (because `loop` is marked `const` there).
> i was showing that the uv_run loop would return even if the timer was still valid (but inactive).
> 

I think we already have tests for that.

> should loop_update_time (above) have MAKE_VALGRIND_HAPPY also?

All tests should end like that, it actually does more than just "making valgrind happy", it also closes all pending handles and destroys the loop.