Optimize object allocations in CSV::Row
I'm seeing a large number of unnecessary array allocations where CSV zips headers & field values together for each row.
- We can reverse the zipped arrays in-place instead of re-allocating dup arrays.
- We can completely skip the reverse-zip remapping iteration when the number of headers and fields match (probably the common case).
This tiny patch should eliminate one extra temporary array object for every table cell, and saves some unnecessary looping.