pp: Separate directive parsing and #if expression parsing

It might be necessary to identify directives before parsing #if
expressions, specifically if macro expansion is needed in them.
lex: Don't bother inserting TK_TODOs anymore

- things like "comment left open" won't ever happen in regular headers,
  so it can be handled as fatal error

- stray bytes are already handled as TK_BYTE, no need for TK_TODO - the
  emitter can take care of that.
Add -l command line option for presets (like fbc's or ld's -l options)

For example -l zip or -lzip for libzip, -lz for zlib, etc.
pp: Fix directive parsing regressions (from 4631d6f9)
pp: Handle #define bodies similar to #if expressions
libzip: Start preset, remove ZIP_EXTERN
pp: Don't accept identifiers as atoms in #if expressions

In the CPP any unknown identifiers are normally evaluated as 0, but this
feature is probably rarely used in C headers for which FB bindings should
be created. If ppExpression() encounters this situation the real reason
probably is that the identifier is a #define that wasn't expanded yet.
In that case it's better to fail parsing and treat the #if as an unknown
PP directive. The identifier should be expanded before the #if expression
parsing, if needed it can even be expanded to 0.
pp: Fix error recovery in #if expression parsing
emit: Fix logical not to produce 0/1 instead of 0/-1
pp: Fix unknown PP directives handling
pp: Add support for #elif