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).
Close the timer on the timer callback, and use MAKE_VALGRIND_HAPPY at the end of the test.