Massive MDatetimes cleanup

Original goal was to spot-check a couple functions (TO_SECONDS, DATE_ADD) but the scope of problems became clearer after looking into MDatetimes. It may have been possible to fix those two alone but leaving the rest of the issue didn't right.

High level problems:
- Copy/paste: There were 3 or 4 versions of most functions and not all of them did the same thing (of course).
- Functional duplication: There was separate parsing logic for all of the types (DATE, TIME, DATETIME, TIMESTAMP) that all did had slightly different behavior, plus a 'master' parsing function (parseDateOrTime) that actually hits MySQL behavior fairly well.
- Incorrect behavior: Bad output, NPE, incorrect clamping, etc.
- Essentially zero unit testing

Clean up the mess (condensing duplication), renaming helpers for clarity, low level testing and and fix a number of higher level problems (CONVERT_TZ, TO_SECONDS, etc).

There are probably lingering problems in specific functions but I think this puts us in a reasonably defensible state for the MCompat date and time types. Hopefully this is good enough until we get our own replacement types in.