Python one-line execution was using ConnectionFileDescriptor to do a non-blocking read against a pipe. This won't work on Windows, as CFD is implemented using select(), and select() only works with sockets on Windows.
The solution is to use ConnectionGenericFile on Windows, which uses the native API to do overlapped I/O on the pipe. This in turn requires re-implementing Host::Pipe on Windows using native OS handles instead of the more portable _pipe CRT api.
There is an outstanding issue after applying this patch, which is that output re-direction doesn't seem to be happening (i.e. the read end of the pipe is not detecting data on the pipe before it is closed). This will be investigated separately in a follow-up patch.