First draft of a new Infer.  It typechecks, but it still has a bug.  Actually, it might be the same bug as BEFORE this overhaul, so maybe it was preserved.