Scoped names
Use a single infer_args object
Fixes
Promote Types::Variable to type parameters for functions.
Fix
Uses the same grammar for types and expressions.