Initial commit
Add license
Create an IntelliJIDEA project
Defining type system and constants
Constant: add type conversions
Beginnings of a pre-processor
Preprocessor: char/string const, comments, punctuators
Preprocessor: macro definition
Preprocessor: very primitive macro expansion
Refactor: split pp-lexer from preprocessor, combine token classes

Split the lower level pp-lexer from the pre-processing logic.
Combine all token classes into one.
Re-integrate SourceRange into PPLexer.Token
Preprocessor: implement token lookahead and use it for func-like macro detection