add function typechecker module
rename function to functioncall in intermediate
possibly incomplete function codegen
do some hlinting
keep track of current function for return in intermediate codegen
implement proper return statements
add return type conversion test
fix functiondef types, and use it in program code gen
modify compileCMM to have type Either String String