ENH: __array_ufunc__ handle np.minimum.reduce
- [ ] closes #xxxx
- [x] tests added / passed
- [x] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit) for how to run them
- [x] whatsnew entry

np.mimum.reduce(frame) -> return Series instead of ndarray

np.maximum.reduce(series[dt64]) -> return Timestamp instead of np.datetime64
np.maximum.reduce(series[td64]) -> return Timedelta instead of np.timedelta64
np.maximum.reduce(DTA) -> return Timestamp instead of np.datetime64
np.maximum.reduce(TDA) -> return Timedelta instead of np.timedelta64
np.maximum.reduce(DTI) -> return Timestamp instead of np.datetime64
np.maximum.reduce(TDI) -> return Timedelta instead of np.timedelta64

np.maximum.reduce(integer_array) works instead of raising NotImplementedError
np.maximum.reduce(floating_array) works instead of raising NotImplementedError
np.maximum.reduce(Series[Int]) works instead of raising NotImplementedError
np.maximum.reduce(Series[Float]) works instead of raising NotImplementedError

Ditto for np.minimum.reduce