REF/TYP: indexes
The only non-trivial change here is changing `_id` from `_id = _Identity(object)` to `_id = object()`, which I found in profiling (https://github.com/pandas-dev/pandas/pull/40171#issuecomment-790219422) makes a non-trivial difference as the non-cython performance inches closer to the cython performance.

Share DTI/TDI/PI's _simple_new with Categorical.

Simplify DTI/TDI `__contains__`

Annotations.

Docstring follow-up to #40241
> The only non-trivial change here is changing _id from _id = _Identity(object) to _id = object(), which I found in profiling (#40171 (comment)) makes a non-trivial difference as the non-cython performance inches closer to the cython performance.

what kind of gains here? hmm, the azure checks are not running. odd > what kind of gains here?

on the benchmark ive been using, _reset_identity is about 2.4% of the runtime, which this cuts to 1% thanks @jbrockmendel 