[ArrayManager] GroupBy cython aggregations (no fallback)
xref https://github.com/pandas-dev/pandas/issues/39146/

This implements one aspect of groupby: basic cython-based aggregations (so not yet general apply, python fallback, or other methods, etc, only the basic aggregations that take the `_cython_agg_general` path).

Similarly to how we currently have a `_cython_agg_blocks`, this PR adds an equivalent `_cython_agg_arrays` which calls the cython operation on each column instead of each block.
> rather than adding new things & constructing the AM / BM here. can you do a pre-cursor PR that pushes this to an internals routine, maybe internals/blockwise. We do not want to keep adding code in here (and in fact want to remove the block manager / internals code).

It might be less easy to fully get internals out of groupby, as we still use it in several places. But focusing on this specific usage: in the same line as we have `BlockManager.reduce` for DataFrame reductions, I could look into adding a `BlockManager.grouped_reduce` (or similar name) for the grouped reductions. 
 One possible experiment to move some internals code out of groupby: https://github.com/pandas-dev/pandas/pull/39997 Updated this now #39997 is merged. Could now easily reuse the same `blk_func` and `cast_agg_result`, so resulting diff looks better now. > so resulting diff looks better now.

much nicer.  perf impact? You mean performance impact of the latest change? Or in general BlockManager vs ArrayManager? > You mean performance impact of the latest change? Or in general BlockManager vs ArrayManager?

i mean perf impact of the PR on the non-AM paths Ah. Do you see a change that you think is potentially performance sensitive? For BlockManager paths, it's mostly some renaming of functions/arguments, an additional check for `isinstance(obj, ArrayManager)` and a replacement of `mgr.axes[1] = ..` with `mgr.set_axis(1, ..)` > Do you see a change that you think is potentially performance sensitive? 

i dont see anything obvious, but ive often been surprised by results in this part of the code ```
$ asv continuous -f 1.1 upstream/master HEAD
...
BENCHMARKS NOT SIGNIFICANTLY CHANGED.
``` also pls merge master Merging this so I can do follow-up PRs. I think I answered to the remaining open comments, but otherwise I can further address those in the follow-up PRs. > Merging this so I can do follow-up PRs

i know timezones are a hassle, but please try to avoid the temptation to do this