refactored Parser type to use an explicit tag

all changes type-driven and "obviously" semantics-preserving
introduced "recursively" combinator

no other API change, and unchanged semantics for all existing client
code
Merge pull request #4 from jvoigtlaender/master

added combinator for use in recursive grammars