This is part XXIV of cmd engine rewrite.
This MR mainly tackles discrimination between builtin commands and external commands.
For example: - 'echo foo' will always execute internal command 'ECHO', whereas 'echo.bat foo' will search of a runnable echo.bat in the %PATH%, and if no file is found run internal command 'ECHO' with '.bat foo' as parameters. - not to mention that 'CALL foo' and 'foo' have slightly different semantics wrt. searching.
This MR: - adds a couple of more tests - cleans up the code: + introduce a couple of helpers to reduce function size + factorize in helpers common code, + let entry point functions for regular vs CALL case implement their own logic on top of common code, - added optimisation in search for external commands