Improve the type checker.

 * Make instance checks work correctly (skolemization) and add a slew of
   tests related to instance checking.

 * Make annotated order-n functions rank-n in row variables. Scalar
   variables are still restricted to prenex polymorphism.

 * Rescope quantifiers in generalized function types. This allows the
   limited form of higher-rank polymorphism to be inferred.

 * Generalization was only using the free variables of a type; remove
   this hack by fixing a bug in enumerating the bound variables of a
   type environment.

 * Remove the useless `id` function.