Currently, when CSV headers are strings, then each row receives a copy of the strings for hash keys. This patch is an optimization to share the same frozen string keys between all rows.
Please verify: in the implementation of Hash::[], are strings the only object that is dup'd, or should other types be frozen so they aren't copied for each row too?