PERF: Improve performance in rolling.mean(engine="numba")
- [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

This also starts to add a shared aggregation function (mean) that can shared between rolling/groupby/DataFrame when using the numba engine.

```
df = pd.DataFrame(np.ones((10000, 1000)))
roll = df.rolling(10)
roll.mean(engine="numba", engine_kwargs={"nopython": True, "nogil": True, "parallel": True})
%timeit roll.mean(engine="numba", engine_kwargs={"nopython": True, "nogil": True, "parallel": True})

260 ms ± 13.5 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) <- PR
431 ms ± 9.21 ms per loop (mean ± std. dev. of 7 runs, 1 loop each) <- master
```
