REF: DatetimeIndex.get_loc
xref #30874 which does similar cleanup for TimedeltaIndex, #31021 for PeriodIndex

Do all parsing/casting/conversion before call to self._engine or super() methods  (xref #30948)

Needs test for preventing integers and Timedeltas through incorrectly.

Some of the casting may be simplified pending #30994.
thanks @jbrockmendel  excellent.  i think that just leaves #30874 as the TDI analogue to this, then we start in on de-duplication and optimization