Rewrote skolem checking to be more lenient in lets.

Since the signatures in a let are about to be generalized, the new code doesn't
worry about skolems introduced in a binding group occurring in the inferred
types of that binding group, and allows them to be generalized. To make this
correct, we used the skolemized types as the basis for the checked types, rather
than checking if any of the skolems occur in pre-skolemized type and failing if
so.

Given:

  g : some a c. forall b. a -> b -> c
  g x y = h x y
  h y x = g x y

Old behavior:

  skolem error

New behavior:

  g : forall a b. a -> a -> b
  h : forall a b. a -> a -> b