REF: Define ExtensionDtype subclasses in consistent locations
`CategoricalDtype`, `DatetimeTZDtype`, `PeriodDtype`, and `IntervalDtype` are defined in `core.dtypes.dtypes`. `_IntegerDtype`, `PandasDtype`, and `SparseDtype` are defined in `core.arrays.*`.  We should be consistent about where these are defined.

My hobby horse right now is the dependency structure.  `core.dtypes` is _almost_ independent of the rest of `core`, and the code would be appreciably easier to reason about if that separation were strict.  To make that work we would need to either

a) move SparseDType etc into `core.dtypes.dtypes` and deal with the handful of imports that the Dtype classes require
b) move CategoricalDType etc over to the `core.array` modules and find a way to avoid the need for these DType classes in `dtypes.common` functions.

a) sounds significantly easier to me.