refactor expression typechecker to not use eithers, just throw errors
merge typechecker types and parser types
add declarations to symbol tables, test