Cheaper way of telling wether or not a RecordState has changes
Defers creation of header information until commit if there are changes
Defers LockGroup creation until we see that there are changes to commit
Reuses tx state --> record state visitor
Reuses command list for extracted commands
Implements ArrayCollection that has efficient clear()
Merge pull request #3287 from tinwelint/2.2-lower-tx-init-overhead

[2.2] lower tx init overhead