win: cause uv_read_stop to immediately stop reading the stream

this implements locking around the blocking call to ReadFile to get
around a Windows kernel bug where a blocking ReadFile operation on a
stream can deadlock the thread. this allows uv_read_stop to immediately
cancel a pending IO operation, and allows uv_pipe_getsockname to
"pause" any pending read (from libuv) while it retrieves the
sockname information

if unsupported by the OS (pre-Vista), this reverts to the old
(e.g. deadlock-prone) behavior

ref. issue #1313
On 08/05/2014 02:42 AM, Jameson Nash wrote:
> it's 5 (64-bit) or 6 (32-bit) pointers large, and is presumably rarely
> used (not needed for pipe servers or non-blocking files). but i'll go
> with whichever you think is better

Lets go with this, I think it makes things a bit simpler. (famous last
words).

-- 
Saúl Ibarra Corretgé
bettercallsaghul.com