A much better parser, faster and less memory-consuming.

The parser, which was previously a single PEG grammar from
characters to ASTs, has been decomposed in three phases:
- a lexer, assembling characters into tokens,
- a preprocessor, taking care of \ifdef's and co. and \insert's,
- and a parser, which builds an AST from preprocessed tokens.

Despite some out-of-grammar tricks (for \line's and to parse
correctly L.1.2 as (L.1).2), this yields code that is easier to
understand, and also much faster and less memory-consuming.
Separated the field 'value' of contexts into 'first' and 'rest'.

This yields more readable code, and it is even slighlty more
efficient.