Remove unused ASTATTRIB_REMOVE
cpp: Remove #undefs/conflicting #defines by default, add -keepundefs option

This changes cppMain() massively:
- the 1st pass doesn't remove #if/#else/#endif & any skipped tokens
  immediately anymore, instead it just marks them with the new
  TKFLAG_REMOVE
- the new 2nd pass actually removes tokens marked with TKFLAG_REMOVE now,
  potentially allowing error reports to see the original input
- #undefs/#defines are now also marked with TKFLAG_REMOVE if they should be
  removed
- the macro hash table now stores #define token positions, instead of
  duplicating the PPDEFINE ASTs. This assumes that parsed #defines won't
  change position or be removed until the 1st pass has finished, which is
  ok though since now all removing is done in the 2nd pass (including the
  removing of #included tokens under -nomerge).
cpp: Fix TK_BEGININCLUDE search to take nesting into account