Fix HighresTime discontinuity on Windows

Large performance counter frequency values would cause overflows, even
when 64-bit integers were used to do the multiplication with NANOSEC.
Fix this by using floating point math instead.

This just applies part of this commit:
https://github.com/joyent/libuv/commit/44ecaa7c9821d41aa3d07e584ea19f60db57f448