We should eventually remove DTCollation from the top level Item class. Only string types really need it. It wastes memory for non-string Items.
As the first step, let's do the following:
- add a new class DTCollation_numeric
- change all:
- remove virtual methods Field::derivation() and Field::repertoire()
- change Field::dtcollation() to be a virtual method:
- Reuse DTCollation_numeric() in Field_numeric::dtcollation() and Field_temporal::dtcollation()
- Replace these members in Field_str:
Later we'll remove DTCollation from the top level Item class and replace it to a new Item virtual method:
So numeric and temporal methods will return and instance of DTCollation_numeric(), by value or by reference.