[N]BUTLAST perform a single pass over the list
The old code would first count the number of conses, and then
SUBSEQ/(RPLACD/NTHCDR). Instead traverse the list with two offset
pointers that advance in lockstep.
Based on a patch by Johan Andersson, on lp#1245697.