Detect macro expressions issues

Expressions logically may not have optional parameters (e.g. you cannot
add x+y if there is no y). Macro listing and parsing will now detect
mismatched parameter lists vs replacement tokens.