Command line argument parser behavior

* sh parser: fin invalid behavior when a global single/multi argument is set after a subcommand which does not have any option
* All parsers now reports msg-e8/msg-e9 only once (Program/Subcommand does not allow positional arguments)
* Add two new parser specifications (msg-e8-once/msg-e9-once) to reflect this change
* Add tests to check the new parser specifications
* Update internal tools