Syntax Trees

Syntax trees implemented to resolve syntax and generate the proper code.
Code generation is decoupled into Generator.cpp which will handle the
compiler calls for each type of operation. This makes it easy to extend
the syntax tree in the future and add new syntax rules. Lexicon will
take the symbol directly from the node to reuse memory and avoid
unneeded allocation, this however couples the syntax tree with a lot of
other structures. Dependencies will need to be broken down later to
decouple the code to keep it manageable.