Misc. improvements and refactoring

Improved the testing scripts and added
a separate batch for testing only the preprocessor
Added tests for include and macros

Refactored lexer and preprocessor to support error
messages similar to gcc/clang/tcc, ie correct current
file and line number when an error is found in included files.

format of error messages is:
filename:line:position: * Error: message
where * is stage, Preprocessor, Lexer, Parsing