Foundations for the factorization of common code between Parser and ParserSubwords.
Finalized factorization of repeated code in ParserSubwords.
Use BFS to explore the parsing branches (instead of DFS).
Added representation for the parser configuration top state, which will be used
to decide parser configs "mergebility".
Added minor assertion.  This is actually important to hold since this guaranties
we never merge ParserConfiguration with ParserConfigurationCompleteReductions
because they will never have the same position (and therefore the "parser
configuration top state" will never consider them equal).
Simplified parser configuration data structure.  No parent reference exists
now.  A simple list maintains the branch history.  This greatly simplifies
the data structure for when merges occur.
New way of detecting loops which is simpler for the merge of the parsers.
Revert "Use BFS to explore the parsing branches (instead of DFS)."

This reverts commit 33e4894e74c2440d0caf082e035924a2e22853cc.
Revert "Added representation for the parser configuration top state, which will
be used".

This reverts commit 2ae4b3e3a3f74138e4adcd012bc8ce4f31b6b599.
Fixed a bug in the subword parser where reduction with epsilon production were
incorrectly returned by getSuccessorActions().

I have also found out that the loop detection improvements commited in
ca7f435ace97cd2511bc59ffde03a8d043a98c3b were more than a mere simplification:
the previous algorithm was ***incorrect*** and did not always detect loops when
they exist.  It also could falsely detect a loop (although that is probably
somewhat uncommon occurrence).  The reason behind the bug is that the previous
algorithm did not respect the boundaries of the current parsing subtree and
took into account reductions from the subtree on the left of the current
subtree.
Improved parsing performance by sharing parsing history.
Merge branch 'loop-detection-fix'.