ENH: consistently cast strings for DTA/TDA/PA.__setitem__
- [ ] closes #xxxx
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

ATM we cast strings for listlike inputs but not for scalars.

I guess this is technically a bug fix on DTA, maybe add a note; ping on green. ping thoughts on if we want to support this in Series.__setitem__ etc?  that's pretty easy, just define DatetimeLikeBlock._can_hold_element to wrap DatetimeLikeArray._validate_setitem_value xref #36226