defined() in #if
preproc-if test
preproc-if expression parsing
Free expr after eval()
cpp #if test
Added defined() test
Added parenthesized expression parsing
Unary operators
Changed expression-expected message to include EOF
Added #elif support
"defined" parentheses are optional

Also fixed defined() off-by-one replacement
Allow L and U on cpp-integer constants
Allow whitespace (nowarn) and tokens (warn) after #endif/#else
Fixed off-by-one in expand_macros()
Fixed tok_pos one-past-end after reading identifier
Skip whitespace for #ifdef
Whitespace skipping for #ifdef / #undef
Correct nesting for macro-func argument parsing
Added basic -I and -nostdinc support