OOParsing: Fix horrible typo in UserListProduction.__init__

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
.gitignore: ipynb and RulesParser_parsetab.py everywhere

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
OOParsing: drop pointless empty constructor from MutableSequenceProduction

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
OOParsing: EmptyIgnoringMutableSequenceProduction.optimize: don't wait to optimize

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
.gitignore: RulesParser_RulesParser.dbg

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
OUT: eliminate the init_hook() phase entirely

It turns out this really is not needed.  It thought mix-ins might
develop complex __init__-time depedencies that would require waiting for
all the mix-ins to establish the required instance attributes before
proceeding but since this can be accomplished just as well by means of
passing keyword arguments, it seems that was a thinko.  Lord knows the
initialization is already complex enough without more phases so just get
rid of this.

Also incorporates some random changes I haven't bothered to factor out
of this commit:

max_cycle_count has been reduced to the much more conservative value of
50.  If subclasses have a reason to raise it, then they may.

the prodtype initialization from p has been factored into a separate
function, so that subclasses have access to that information if they
need it (and can override it... perhaps this should be done for value()
as well).

max_optimize_cycle_count may be set to None to turn off the optimization
cycle limit entirely.

Adds a new assignment operator, PLUSPLUSPLUSEQUALS which is PLUSPLUSPLUS
as += is to (+, =) are in most languages.  This syntactic sugar
generates a traditional := during optimize() so that we will only need
to maintain a single assignment implementation.

Several places where arguments/behaviors were being stuffed into kwargs
unconditionally are now converted to check kwargs and respect passed-in
values if present.

Support for the string-concatenation and +++= assignment productions
are wired into yacc.

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
gitignore: tags

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
OOParsing: fix a couple of bugs in AtomicProduction

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>
RulesParser: BooleanConstantProduction for true/false

Signed-off-by: Gregory M. Turner <gmt@be-evil.net>