Generalize new_fn_type in preparation for adding other type constructors
Add support for boolean literals
Start implementing type inference for applications
Test type inference errors
Make a separate exception class for type inference errors
Extract a new visit_with_binding() method.
Preliminary implementation of type inference for let bindings
Test a simpler case with "let"
Bug fix: "let" was overgeneralizing
Test that "let" can still generalize when it needs to
Test that, in contrast to "let", "lambda" doesn't generalize.