DEPR: restrict downstream usage of core.internals
There are some optimizations I'd like to make in core.internals (mostly making the signatures stricter so we can do less validation at `__init__`-time).  But that risks breaking changes for downstream packages that use the existing non-public APIs.

I'd like to start by asking downstream projects that access internals to identify what they actually use/need.

Once we identify what is used, my thought is to 1) encourage usage of public APIs where possible and 2) provide backward-compatible psuedo-public APIs (xref #40182).

cc @jorisvandenbossche (pyarrow), @TomAugspurger (dask), @mdurant (fastparquet), @shoyer (xarray), anyone else?