Rationale:
- there was a lot of large objects passed by value, so potentially
there's a speed bump from this
- even for implicitly shared classes like QString/QList there's still
a (small) cost for copying the objects when there's no reason to
- it's the right thing to do!
- Add support for reordering columns in a table (fix#5942)
- Add support for expression based columns
- Add support for setting column alignment (fix#2957)
- Add support for setting column header alignment
- Make sorting in tables correctly handle nulls, dates, times, locale aware string sorting
This work also paves the way for future expansion of attribute tables to allow for setting column widths, column colors, etc.