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()
Goes to end of line after each csv input entity
Merge pull request #3287 from tinwelint/2.2-lower-tx-init-overhead

[2.2] lower tx init overhead
Rewrite plans with Apply/Optional/Expand to use OptionalExpand instead.

This fix only covers the case where the left-hand-side of Expand is a SingleRow.