ast: Fix astNew() to handle the new expressions
lex: Fix #include <foo> parsing
ast: Use separate ASTNODE.cond instead of ASTNODE.next for IIF condition

Otherwise, loops that cycle through children of a parent ASTNODE will
mistake the IIF condition for a child of that parent, because such loops
are typically based on walking the ASTNODE.next field...
pp: Fix expression evaluation to walk through non-expression nodes
tk: Add array version, for comparison
tk: Remove stats and array version again

The gap buffer implementation is faster because it memmoves only 1% of the
amount of tokens memmoved by the array version, when working through the
test suite.
ast: Revert back to children list, instead of l/r
emit: Generate #ifdef/#ifndef for #if [!] defined
pp: oops in case of missing #endifs
pp: Split expression folding pass from #if block evaluation
pp: Split expression/#if evaluation into separate module