Clear the substition after each global binding group

All variables that exist in the substitution will be quantified or not used after a global group

72% improvement on typechecking prelude
Added a map of local variables to the typechecker

By not storing all variables in the same we can reduce how many variables we need to apply the substitution on ~40% improvement
Only do the substitutions for global bindings on the currrent group -18%

No other bindings should have any variables that can be updated
previousLocation is never used in the lexer, removed it
Added parsing and lexing of import declarations
Added parse_modules function

parse_modules takes a module name and parses the module including all its imports recursively while checking for cycles
Added a complete pipeline for compiling modules with imports
Fix fromInteger compilation

fromInteger accidentally took a double as argument
Removed unused function apply_globals
Fixed compile_module not loading all assemblies it needs for each module