Implement universally quantified type variables, both explicitly given by the user and inferred by the type inference algorithm.
The beginning of a parse-don't-validate-based hindley-milner typechecker, which returns on success an IR where every AST node trivially knows its own type, and using those types to determine LLVM types in codegen.