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 -- https://gitlab.winehq.org/wine/wine/-/merge_requests/6475