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