This is part VIII of cmd engine rewrite.
It covers: - introduction of a token based parser. For now, it produces the same (degenerated) list of commands as we currently do. Note: I opted for a pull mode for the parser while the lexer is in push mode. Long term plan is to move the lexer into pull mode too (and also converge the two different current methods of argument/token access). - introduction of return codes. It's not obvious from current tests that lots of these codes are actually the kernel32 ones, but tests in later MRs will clearly show it. - starting changing 'exit' and 'goto' builtin implementations to use return code. All builtins will have to adopt that scheme for command chaining to be properly supported. - add delayed expansion for IF command. That's not needed for now (as single command execution already takes care of it), but will be needed when we move IF and FOR commands out of single command in yet to come MR. Includes some test to cover that part. (in case someone asks, it was needed in previous MR regarding the FOR command, as the delayed expansion was only called on the body of the FOR command, not the control block)