The previous generation’s values stick around (prev) so incremental
builders can extend them instead of starting over; a value is consumed
(removed) the first time its type resolves under the new generation, and
anything never consumed drops on the following generation change.
Borrowed view of the sort-key columns, so permutation maintenance can
hold &mut permutation arrays while comparing through the one
definition of each key’s order (a drifting duplicate of cmp_by would
silently corrupt the merge).