This MR starts implementing pipe between commands with: - parallelism between the two sides of the pipe - using real pipes.
(Current code is sequential: running LHS, storing its output into a temp. file, then running RHS with temp. file as input).
The "interesting" part is: - in order to achieve parallelism, native cmd.exe when LHS or RHS of pipe contains a builtin command or instruction, run this part in a new and separate cmd.exe instance. - which means that we need to transform back the parsed structure of a tree of instructions into a string for feeding the new cmd.exe instance ('rebuild').
This serie mainly: - adds some tests to cover some quirks in pipe handling (esp. when expansion occurs between parent and child process), - refactors some code for the next patches, - introduce a new node in parse tree to help in the rebuild process (will be shown in next serie, and will allow matching the generated trailing spaces), - implement the pipe mechanism for "simple" commands.
Next serie will cover the non-"simple" commands.
Notes: - the now successful tests in the last patch of this serie are achieved because now the command string in expanded twice (once in parent cmd.exeprocess, and the second time, in child process). - all the wine_todo introduced in this serie will be solved in next serie.