Properly handle free variable name scoping
Fix typo in Number usage
Add missing promote/demote case for KwArgsSeq
Separate scoped tvar and tvar bounds environments.

tvar-env holds an environment mapping scoped symbols to
free variables.

tvar-bnds holds an environment mapping fresh symbols to
the corresponding bounds.
Fix CTYP-91

Correctly instantiate polymorphic Protocol instances.