ExtensionArray construction with given dtype (sort of shallow_copy?)
Many of the extension arrays tests are skipped for `Categorical` because the reconstruction of the expected result does not preserve the categoricals (so kind of the "metadata" of the dtype).

For example:

https://github.com/pandas-dev/pandas/blob/78fee04e95e3c53c83c938285580c39e7761ddc8/pandas/tests/extension/category/test_categorical.py#L70-L72

because in the actual test, the expected result is constructed from a list:

https://github.com/pandas-dev/pandas/blob/78fee04e95e3c53c83c938285580c39e7761ddc8/pandas/tests/extension/base/reshaping.py#L47-L50

(still with `type(data)(..)`, but replacing that with `data._constructor_from_sequence(..)` in https://github.com/pandas-dev/pandas/pull/20746).

This is kind of a recurrent pattern, so that might indicate we should find a solution for this?

So do we want a canonical way in the extension array interface to construct an ExtensionArray that has a certain dtype?

Possible solution is to add a `dtype` keyword to `_constructor_from_sequence`