Added type checking utility, used it in AST to enforce/clarify types of AST node class members
Added figures and diagrams