[WIP] Avoid creating unneeded hashes by using Hash#merge! instead of #merge.

The "row" hash created within each of these methods is modified and returned.
The intermediate hashes are unneeded since no one else can accidentally modify them.
@tenderlove I'll try your suggestion of collapsing the Initial allocation, merge!, merge!, etc. into one allocation and keep the refactoring as a followup.