So that clients like CmdlineSpecialEdits#Substitute#ChangeSeparator() correctly extract the :substitute arguments in :s^Gfoo^Gbar^Ggc (which is a valid command and works). (Unprintable separator characters are unlikely to be used elsewhere, though.)
Need to exclude <Tab> now as well; use the [[:space:]] collection for that.
This somehow previously failed when there's whitespace between a previous command and the | delimiter:
:echo ingo#cmdargs#command#Parse('new|verbose s /foo/bar/g', '.*$') " OK
:echo ingo#cmdargs#command#Parse('new |verbose s /foo/bar/g', '.*$') " FAIL: Parses "new" as command.
The cause is that /^\s*/ yields an empty match instead of /\\\@<!|\s*/ matching. Break the parsing into two iterations, and try with the |-separation first. This should also make troubleshooting easier, as we now use more intermediate variables.