This removes all Haddock-related tokens from the grammar. When the lexer encounters
a Haddock token, it plucks it out and puts it into some store in the 'PState'. Then,
the parser can query this store directly to get Haddocks. The actual docstrings are
keyed by their left or right 'RealSrcLoc' position.
The main benefit of this is that misplaced Haddock tokens no longer cause parse
errors - only warnings.
Not everything is rosy though. Here are the main issues:
- 'parseDeclaration' doesn't return 'DocD' variants
- we have to lookahead on every token (when in Haddock mode), so that means stashing and restoring the PState. Crucially, it means relexing twice the same thing. This could probably be fixed (by storing more stuff in PState)