Currently, when a new process is spawned on Windows, the
subprocess module is used. When it will run from inside
a greenthread it will try to set non-blocking mode on the
anonymous pipes that it creates for the process stdin, stdout
and stderr. This is not supported in Windows.
This patch changes the usage of subprocess.Popen with
CreateProcess and implements non-blocking I/O using NamedPipes.
The files obtained from CreateFile on the NamedPipe will be
passed as stdin, stdout and stderr to the new process spawned
with CreateProcess. In order to communicate with the new
process, overlapped structures are used to ensure that
the greenthread will not be blocked.
Change-Id: I173b2e20275e4f89065c657bfcd0128ab4d1d3bc