simplifying logic of code generator: dead blocks are always emitted and then cleaned up.
refactoring typechecker to enable quote .. in .. end statements.
typeexpressionlist is gone, lists are not represented by treelists.
typedexpressions re-injected into the compiler are represented by typedexpression nodes.
treelists are used anywhere a list of statements or expressions is required in typed ASTs
they contain the following fields
   statements - list of statements to run to prepare this list
   expressions - list of expression resulting from the statements
   next - [optional] another treelist with further statements or expressions to emit
   types - the _total_ list of types that this treelist will create, including types produced in next blocks
           this can be shorter than the sum of all the expressions in the treelists if the list has been truncated
All rtol and ltor conversion in the type checker have been removed along with functions like aslvalue and asrvalue for
managing them. The codegenerator now determines when to convert lvalues to rvalues.