Change strategy: Show error instead of preserving unknown constructs

This removes everything related to preserving unknown constructs and
generating TODOs for them.

If anything is missing from fbfrog's parser, it should just be adjusted.
That's a better help overall than generating TODOs because it solves the
real problem (and it forces support for needed constructs to be added to
fbfrog's parser). The parser already is very complex anyways, recursive
declaration parser, multiple expression parsers, etc., so adding more can't
make it much worse...

Anything that cannot or isn't supposed to be handled, can be refused, as in
"this cannot be converted to FB" or "this isn't supported yet".

Instead of editing unknown constructs in the output .bi, the user can
aswell edit the input .h to get fbfrog to parse it -- that doesn't make
much of a difference, no matter whether editting manually or automatically
in the tk buffer.

This makes the whole two-step parsing and token poisoning thing in
cToplevel() unnecessary. All errors can be reported immediately, like a
compiler would do. This simplifies the C parser greatly.

Also, TK_SPACE can finally be removed completely, as it was needed only to
preserve the formatting of unknown constructs. Similar to that, all TK_EOLs
can now be dropped after the preprocessing step. This means the C parsing
can simply use x += 1 instead of x = cSkip( x ) now, which is another nice
simplification. The same goes for the PP parsing and its ppSkip()...

Furthermore this patch makes the pre-processing module work much like a
real CPP: Now all #if blocks are solved out.

It's better to use separate version-specific parsing passes to read in
slightly different versions of a header, and then rely on the AST merging
to combine it, than to preserve certain #if blocks and not others.

The AST merging can effectively re-add #if blocks (such as the checks on
which API version should be used, or which OS to compile for), only in a
much nicer and controlled way.

#includes/#defines/#undefs are still preserved, and taken into account by
the preprocessing step.

- lex now stores source code locations into the tokens, some parts of the
  C/PP parsing already copies those locations into AST nodes
- including fixes for some newline-counting bugs in the lexer
- escaped EOLs are now handled in the lexer completely, to support them
  outside of PP directives aswell like gcc/clang
- The locations are used by the new pretty error reporting functions to
  show error messages with lots of source code context and an ^ indicator
- The C parser, AST and emitter no longer have to worry about #if blocks
  since they're no longer preserved, all corresponding code removed
- ppEval() is now always called, there's no point having a ppNoEval() just
  for test cases...
- The test suite needs lots of adjustment, not finished yet
Switch AST to use l/r fields for expression operands

instead of linked list of children. This should make it easier to replace
operands on the fly...
pp: Don't report unsolved defined()'s immediately

instead only report unsolved defined()'s that exist after hFold() is done.
This allows the NOP optimizations to drop unsolved defined()'s silently
which is the expected behaviour (short-curcuiting etc...).
pp: Fix #define parsing regression
Fix off-by-one in #if stack limit check
ast: Fix astDump() for new l/r fields and UOP/BOP nodes
pp: Fix ?: (iif) parsing regression
pp: Fix error location if #if condition couldn't be parsed
lex: Fix lexer not setting behindspace flag properly
pp: Fix #define parsing regression
Improve tkOops() output by doing tkDump() for now
c: Fix "struct a *b;" vardecl parsing regression
cToplevel(): Do cEnumConst() instead of parsing structs/typedefs in enums
pp: Re-add simplified pass for PP expression parser testing