Refactor of the Parsec to use multiple return values instead of using IEnumerable<T> at the generic parameter for Parser<T>.  For parsers that should return multiple values it's possible to access the IEnumerable<T> via .Mconcat().
This makes it much simpler to keep all monads in the chain using the same generic type and then extract the list of results only when necessary.
Probably still buggy, but all tests pass, so it's on the right track.
Changed New to Gen to represent General parsers.  Should work nicely with Tok and Expr.