Nth revision of this code.
Improve the closing and undrifting code significantly. Many of the
procedures that were (needlessly) closed by the previous version are
no longer closed.
Undrifting constraints are computed more precisely.
Additionally, closing checks connectivity of the environment chain
(generating undrifting constraints as necessary) to ensure that all
the free variables captured are in fact available, and it also ensures
that disowned children (spliced out by the drifting code) are
undrifted if they depend on the closed-over variables.
One potential non-improvement introduced: Undrifting any procedure
forces its compatibility class to close, in order to avoid a harder
analysis. This is a cop-out for now.