Use lispy tuples in cat (fixes #21673) (#39314)
The `cat` pipeline has long had poor inferrability.
Together with #39292 and #39294, this should basically put an
end to that problem.
Together, at least in simple cases these make the performance
of `cat` essentially equivalent to the manual version.
In other words, the `test1` and `test2` of #21673 benchmark
very similarly.
(cherry picked from commit 78d55e2445e810d34b396920dcdcc30d559c49a9)