When using the "Count distinct" aggregation type on a column that
selects multiple fields, we should account for each of them in the
returned SQL.
Move helper method to facilitate this to the base aggregation class
so it can be re-used between all types.
The group concatenation types now consistently sort the returned values
and support aggregating columns containing multiple fields and those
with defined callbacks.
Refinements to how columns can be defined in relation to available
aggregation methods:
* Disable aggregation types;
* Set column GROUP BY during aggregation;
* Defer column sorting to that of the aggregation method