POC: PDEP16 default to masked nullable dtypes
This is the second of several POCs stemming from the discussion in #61618 (see also #61708).  The main goal is to see how invasive it would be.

Specifically, this implements the part of PDEP16 #58988 that changes the default numeric/bool dtypes to use numpy-nullable dtypes.  So `pd.Series(foo)` will behave roughly like `pd.Series(pd.array(foo))` does in main.

Notes:
- For POC purposes this takes the stand that we _never_ give numpy numeric/bool dtypes and always map `dtype=np.int64` to the masked dtype.
- The get_option checks will need to be updated to user a more performant check like for `using_string_dtype`
- The simplification in core.internals.construction will eventually be reverted as the MaskedArrays are updated to support 2D.
- This does *not* incorporate #61708.
- Currently 16773 tests failing locally (with `-m "not slow and not db"`).  705 in window, 2036 in io (almost all of pytables is failing), 1997 (plus a ton more I already xfailed bc they get RecursionError) in computation.  tests.groupby.test_raises has 1110 that look to be mostly about getting the wrong class of exception or exception message.  Many in sparse too, though I don't have a number ATM.  Some of these merit issues:
    - [ ] #61709
    - [ ] #30188
    - [ ] RangeIndex.equals issue, see comments in asserters.py diff.

This served its purpose of getting an idea how difficult getting this working would be. Closing.