[ArrayManager] Add libreduction frame Slider for ArrayManager
xref https://github.com/pandas-dev/pandas/issues/39146 and follow-up on https://github.com/pandas-dev/pandas/pull/40050#discussion_r583042707

While getting groupby working for ArrayManager in https://github.com/pandas-dev/pandas/pull/40050, I didn't yet use `fast_apply` / `libreduction.apply_frame_axis0` because that relies on BlockManager internals. But, `libreduction` is faster than the python fallback (luckily, otherwise we would have it for nothing ;)).

So this PR is adding a version of the `BlockSlider` but then for a frame backed by an ArrayManager. 

I didn't combine `BlockSlider` / `ArraySlider` in a single class for now (first wanted to get it working). I assume it would be "possible" with some gymnastics (there are several details that are different, such as different strides/shape index being used to move, access to `blklocs`/`blklocs`, etc). 
So personally I would prefer keeping it as a separate class (certainly given that we don't intend to keep both long term, I think)

For benchmarks, we have `groupby.Apply.time_scalar_function_single/multi_col` that exercises this fast path, and this PR brings the ArrayManager code path back on par with the BlockManager version (before this PR, that benchmark saw a 3x slowdown because of using the python fallback).



