------------------
- Added back support for reading old DateTime pickles without a `_micros` value.
- Avoid storing `_t` representing the time as a float in seconds since the
epoch, as we already have `_micros` doing the same as a long. Memory use is
down to about 300 bytes per DateTime instance.
- Updated exception raising syntax to current style.
- Avoid storing `_aday`, `_fday`, `_pday`, `_amon`, `_fmon`, `_pmon`, `_pmhour`
and `_pm` in memory for every instance but look them up dynamically based on
`_dayoffset`, `_month` and `_hour`. This saves another 150 bytes of memory
per DateTime instance.
- Moved various internal parsing related class variables to module constants.
- No longer provide the `DateError`, `DateTimeError`, `SyntaxError` and
`TimeError` exceptions as class attributes, import them from their canonical
`DateTime.interfaces` location instead.
- Removed deprecated `_isDST` and `_localzone` class variables.
- Moved pytz cache from `DateTime._tzinfo` to a module global `_TZINFO`.
- Make DateTime a new-style class and limit its available attributes via a
slots definition. The pickle size increases to 110 bytes thanks to the
`ccopy_reg\n_reconstructor` stanza. But the memory size drops from 3kb to
500 bytes for each instance.