adding source pos to type checker errors
lots of cool typing stuff. but there's a bug where substitutions don't get propagated