maybe_promote: Restrict fill_value to scalar for non-object dtype
Partially reverts #29362 by allowing non-scalar fill_value for _object_ dtypes.  i.e. in 0.25.3 `pd.Series(range(3), dtype=object).shift(1, fill_value={})` would work, #29362 broke that, and this restores it.  Added `test_shift_object_non_scalar_fill` for this.

With the new restriction on `maybe_promote` in place, we can get rid of all the `box` tests and simplify test_promote a _ton_.  This removes about 2500 tests.  This also uncovers the fact that we were failing to run some of the non-box cases, which are now xfailed.