separate _libs/src/reduce.pyx to _libs.reduction
- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

needs a rebase # [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/19306?src=pr&el=h1) Report
> Merging [#19306](https://codecov.io/gh/pandas-dev/pandas/pull/19306?src=pr&el=desc) into [master](https://codecov.io/gh/pandas-dev/pandas/commit/f0cd23ca6485940e3a6572cc4f5afdce4c3921ab?src=pr&el=desc) will **decrease** coverage by `0.02%`.
> The diff coverage is `100%`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/19306/graphs/tree.svg?token=eZ4WkYLtcO&width=650&height=150&src=pr)](https://codecov.io/gh/pandas-dev/pandas/pull/19306?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master   #19306      +/-   ##
==========================================
- Coverage   91.53%    91.5%   -0.03%     
==========================================
  Files         150      150              
  Lines       48738    48738              
==========================================
- Hits        44611    44599      -12     
- Misses       4127     4139      +12
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `89.87% <100%> (-0.03%)` | :arrow_down: |
| #single | `41.72% <37.5%> (ø)` | :arrow_up: |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/19306?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/core/groupby.py](https://codecov.io/gh/pandas-dev/pandas/pull/19306/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZ3JvdXBieS5weQ==) | `92.14% <100%> (ø)` | :arrow_up: |
| [pandas/core/apply.py](https://codecov.io/gh/pandas-dev/pandas/pull/19306/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvYXBwbHkucHk=) | `99.42% <100%> (ø)` | :arrow_up: |
| [pandas/plotting/\_converter.py](https://codecov.io/gh/pandas-dev/pandas/pull/19306/diff?src=pr&el=tree#diff-cGFuZGFzL3Bsb3R0aW5nL19jb252ZXJ0ZXIucHk=) | `65.22% <0%> (-1.74%)` | :arrow_down: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/19306?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/19306?src=pr&el=footer). Last update [f0cd23c...a63da0f](https://codecov.io/gh/pandas-dev/pandas/pull/19306?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
 ok, this at least de-couples some lib.pyx, which is good.