Preprocessor

- Renamed binary operator variables.
- "defined" cannot be treated as a preprocessor keyword, it is handled separately.
- processorState is now a bit flag container instead of a single value.
- Preprocessor states are now marked with bit flags which indicate behavior. Much better.
- Ensuring "defined" is not used as a macro name.
- Nested #if/#endif is working correctly now, using a stack.
- Added preprocessor expression parsing functions from master, tweaked them to use the regular lexing/parsing functions where possible.
- Added missing expression types and operators to preprocessEvalExpression, fixed some tests.