This class is ultimately intended as a replacement for cmsys::Process.
It spawns a series of processes using libuv, piping the output of each
command into the next.
Note: input support has not yet been implemented because write
support has not yet been implemented on cmUVStreambuf.
Avoid leaving any members uninitialized after construction even if they
are later initialized before use by methods. This helps convince static
analysis tools that the members are not used uninitialized.