Fix leak of skolemized types in HRTB

A subtle bug in the higher-ranked sub/lub/glb routines could cause incorrect results and/or leaked skolemized regions, something I've seen from time to time but never quite knew why. Finally tracked it down. Didn't open an issue but there are various tests that report wrong result and/or ICE in the PR.

r? @pnkfelix 
nit: "algorith" => "algorithm"