BUG/API: DTI/TDI/PI.insert cast to object on failure
- [ ] closes #xxxx
- [x] tests added / passed
- [x] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [x] whatsnew entry

ATM DTI/TDI/PI/insert are pretty idiosyncratic.  This changes them to match the base Index.insert by a) always trying _validate_fill_value (this changes the behavior for strings that can be parsed to datetime/timedelta/period) and b) always fall back to object in cases where this validation fails (this changes behavior for non-strings where the validation fails).

AFAICT the current behavior was implemented in #5819 and the only discussion I see about castable strings or non-castable non-strings is this [comment](https://github.com/pandas-dev/pandas/pull/5819#issuecomment-31454545), which I don't think is relevant any longer.

One corner case is mismatched tzs, which raise in master.  In the PR they cast to object.  They could also reasonably cast to the index's tz (xref #37605)

cc @rhshadrach IIRC you had a question about the insert tests in test_coercion.  I think this addresses what you were asking about.  Let me know if I missed something.