Simplify generalization. Separate declared & inferred types.

Not entirely certain this is sound, but it seems to
work. The previous solution was not getting the set of
unbound names correctly: it was only considering scalars.

This solution simply generalizes all of the free variables;
I have a hunch that this only works because all generalized
bindings are at the same (top) level.

It is still possible for type errors to depend on the order
in which definitions are inferred.

Closes #68