Matcher: made new return' function work for whatever transformers we use
Matcher: Added in global state for successes (comments)

I had to add ListT back in so it could wrap a State monad which sits in the middle and is visible by all traversals.  All this state holds are the "wins".  So group capture information is owned by the traversals themselves and can't be seen by other traversals but successes can be seen by all traversals.

This allows us to fix the bug where matches occurring before the string is exhausted were dropped.  Now they all matches are kept.  For the final implementation of this class, I will probably use execState to drop the value and just use the final state since that will have the wins and all group capture information.
NFA test: changed predicates to work with the new format.  All tests pass