TYP: __getitem__ method of EA (2nd pass)
follow-on from #37898

remove casts and ignores added in #37898 (needed to use typevar in DatetimeLikeArrayMixin in conjunction with overload for slice to return correct DatetimeArray/PeriodArray)

another pass required to

more typevars for return type of type(self)
type \_\_getitem__ in concrete classes (Categorical, IntervalArray and SparseArray)
overloads with Any report overlapping overloads
NAType resolves to `Any` since implemented in cython without stub file

lgtm. @jbrockmendel  couple of comments, otherwise LGTM removing this from the 1.2 milestone for now.

since #35259 is merged, can now proceed with the outstanding tasks in parallel. so plan is to get all the tasks started (to get review) and will then circle back to this. This pull request is stale because it has been open for thirty days with no activity. Please update or respond to this comment if you're still interested in working on this. closing while we discuss #39513
