TST: Fix xfails for non-box maybe_promote on integer dtypes
Orthogonal to other outstanding maybe_promote PRs.

This one required pretty significant changes to the code.  Using `np.min_scalar_type` and `np.can_cast` cleans this up a bit, but it is still pretty verbose.  AFAICT there is no clear way to make it shorter without significantly sacrificing clarity.

In a follow-up I think L410-459 can be refactored out to a helper function.  Waiting on that until I figure out the boxed=True cases, which are still troublesome.
thanks. I suspect this is technically an api internally, but we likely don't expose this to the user. This may also have some perf implications. But let's refactor this beast and remove the array stuff before doing any of that. Yah definitely time for a refactor/cleanup pass