PERF/REF: concat
Motivated by #50652, which is a near-worst-case for our current concat implementation.  This gets about a 10-15% bump on the case I've been profiling (num_rows=100, num_cols=50_000, num_dfs=7).  I'm exploring other approaches that I expect to get much bigger gains from.

The big upside here is the refactor.  I find the current combine_concat_plans really hard to grok.  Getting a single "plan" upfront rather than constructing multiple plans is much simpler.
Thanks @jbrockmendel 