Log of /sml/trunk/src/compiler/FLINT/kernel

* opt/split.sml: seriously reworked. Now splits TFNs as well.
* kernel/primop.sml (effect): removed DEREF and MAKEREF from the pure
primops.
* flint/flintutil.sml (copy): sort the type-map since {lt,tc}_subst
actually expects it to be sorted.
* kernel/ltyextern.{sml,sig} (lt_nvpoly): new function (digged from
recover.sml to build a LT_POLY in the case of named tvars.
* opt/recover.sml: removed unused depth arguments left behind from before
we switched to named tvars.
(addLty): added for the benefit of opt/split.sml
(lt_nvpoly): moved to ltyextern.sml

Merged in Bratin's typelifting and Chris' named tvars.
FLINT is now using tvars from the first lcontract all the way to cps.
* reps/rttype.sml: changes from Bratin.
(rtLexp): define the NVAR case (return the tvar as an lvar).
* opt/[fl]contract.sml: removed the restriction on inlining at the same
deBruijn depth.
* opt/lift.sml: new file for typelifting.
* flint/flintutil.sml (copy): added tvar renaming.
* flint/tvarcvt.sml: new file for named tvar <-> deBruijn conversions.

* added basic unrolling support
* changed fkind to have most annotations valid on
functors as well. It also adds a loopkind annotation as well as extends
the inline boolean into a three-way alternative.
* switched to a continuation passing style to implement the
let-associativity rule in a better way.

made changes to kind-checking so that enc_tvar need not be exported
by ltykernel. one awkwardness is that the tkLookupFreeVars function
in ltykernel manipulates a tkindenv, which is technically not defined
until ltyextern.