Miscellaneous Changes

Note: this commit does not compile without commenting parts of a line.
Moved struct c_parser to c_ast.h for access by the semantics module.
Added semantics.h and semantics.cpp and fixed error reporting in
preprocess.cpp.
Also, the way the structures will be initialized by the parser and the
semantics will be: everything will be initialized by the parser
initially to default values such as nullptr. A subset of C will be
supported first, so the parser will assume the structure will be
complete even though there are incomplete structures in the parser. (The
ast covers the entire c99 language). Then, the parser will initialize
parts of the structure as it parses the source code.