REF: implement dtypes.cast.can_hold_element
Passes the tests added by #39086, gets us close to collapsing the NumericBlock subclasses and just using NumericBlock directly.
nice, let's merge that one first and rebase this. ok give this a rebase Rebased + green