numpydev ragged array dtype warning
Closes #31201

There are still two failures in the Categorical constructor I'm looking into. Not sure what's best yet.

```python
In [2]: pd.Categorical(['a', ('a', 'b')])
/Users/taugspurger/sandbox/pandas/pandas/core/dtypes/cast.py:1066: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray
  v = np.array(v, copy=False)
Out[2]:
[a, (a, b)]
Categories (2, object): [(a, b), a]
```

I think that perhaps the user should see this warning, but have an option to pass through a `dtype` to silence it... Not sure yet.

Tagged for backport to keep the CI passing on that branch.