Implementing rolling min/max functions that can retain the original type
- [ ] Enhances previous bugfix to #12373 
- [ ] Added test_rolling_min_max_test_types to test_windows
- [ ] passes `git diff upstream/master | flake8 --diff`
- [ ] Added documentation to computation.rst for the new as_float argument and updated whatsnew for v0.18.0
  - Changed the rolling min/max functions in algos.pyx so
    that they use a cython fused type as input instead of a float64
    so that the function can accept arrays of any numeric type
  - Merged the functionality of rolling min/max into a common
    function with branches based on whether or not it's running
    min/max
  - When running rolling min/max for intergral types and there
    are not enough minimum periods, the output values returned
    are zero
  - Added a unit test to test_moments to make sure that rolling
    min/max works for all integral types and float32/64
  - Updated computations and whatsnew doc
