Update Cygwin ICMP service thread for asynchronous pipes
Recent versions of Cygwin implement pipe() using Windows' named
pipes, and put the read end of the pipe in FILE_PIPE_COMPLETE_OPERATION
mode, which doesn't allow overlapped I/O operations.
For the relevant commit in the Cygwin repository, see
9e4d308cd592fe383dec58ea6523c1b436888ef8
The solution here is to maintain a Windows event object which is
set only when any ICMP requests are pending. We can do an alertable
wait on that event object, which will allow us to complete ICMP
requests.
Thanks to Adam Schultz for research into this issue and a first
attempt at a fix.