Extends onMatch to behave as a monad transform

With this change onMatch checks the return type of its callback and acts
as a monad transform (like flatMap) if the returned value is another
parser.  Otherwise onMatch acts as a functor transform as before.

Also adds an accept() function that produces a parser that always
matches and that consumes no input.  This pairs with the monad behavior
of onMatch.