Make PolyDots actually subtype correctly.
Make PolyDots be subtypes even if they have different fixed arguments.
Add more hacky things to make with-handlers typecheck.

Closes PR12644.
Prioritize annotations over expected type for dotted args.

Close PR12849.
Fix a bunch of polydot errors.

Dotted constraints are now inferred correctly.
apply and tc/expr correctly handles functions returing ValuesDots.
Polymorphic lambdas now correctly add the type variables to the
environment.
Substitute now workes on ValuesDots.