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.