REF: implement module for shared constructor functions
`core.construction` intended for code to be shared between `pd.array`, `Series.__init__`, and `Index.__new__`.  The module should not need to be internals-aware.

This only moves array and extract_array to keep the diff contained.  The next step would be to move internals.construction.sanitize_array, which is used in a number of non-internals places and satisfies the not-internals-aware condition.

Several functions from core.dtypes.cast would also make more sense here than in their current locations.

<b>update</b> moved sanitize_array too, and updated imports
@WillAyd help with mypy complaints? I think this is just starting to validate `_shared_docs` in pandas.core.generic now. Can probably just annotate that as `Dict[str, str]` to resolve (off the top of my head - didn't look deeply) mypy fixed, thanks