REF: implement Dtype.index_class
Allows EAs to specify what Index subclass they want to use.  Avoids special-casing pandas-internal EAs.

Small perf improvement

```
In [2]: dti = pd.date_range("2016-01-01", periods=3, tz="UTC")

In [3]: cat = dti.astype("category")

In [4]: %timeit pd.Index(dti)
6.39 µs ± 80 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each) # <- main
5.69 µs ± 368 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)  # <- PR

In [5]: %timeit pd.Index(cat)
6.37 µs ± 112 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)  # <- main
5.8 µs ± 135 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)  # <- PR

```
Thanks @jbrockmendel 