REF: Make numba function cache globally accessible
- [x] tests passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`

For all the numba accessible operations, we use a cache to store compiled JIT'd functions for performance. 

This `_numba_func_cache` used to be an attribute of `Rolling` and `Groupby` objects before, but while working on https://github.com/pandas-dev/pandas/pull/33388, I cannot easily rely on having access to those objects.

This PR moves `_numba_func_cache` to  `pandas/core/util/numba_.py`. Since this cache is now globally shared, the key has changed from `_numba_func_cache[func] = compiled_func` to `_numba_func_cache[(func, op)] = compiled_func`

Does this cache ever get invalidated? >Does this cache ever get invalidated?

No. Nothing immediately comes to mind why we need to invalidate it at a certain point. Open to thoughts. thanks.