Fix 677

* Improved error checking during code generation
* Fixes #677

Note that a parameter was added to one of the code generation templates, so care was taken to minimize the chance that this will break users.

1. If the template parameter is not required (i.e. if the grammar does not contain a `PLUS_ASSIGN` label on the recursive atom of a left-recursive alternative), the code generator will avoid assigning the parameter if the template was not updated to include it. This means all grammars which work prior to this change will continue to work after this change, even for code generation templates that were not updated to include the new feature.
2. If the template parameter *is* required, but the code generation templates have not been updated to include the new parameter, error 32 reports the problem, where `<arg>` is the name of the template which was not updated.

  > code generation template &lt;arg&gt; has missing, misnamed, or incomplete arg list; missing isListLabel