BUG: Make nullable booleans numeric
- [x] closes #34051
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

Also a decent speedup since this is now going through Cython space:
```python
df = pd.DataFrame({"a": [1] * 50_000 + [2] * 50_000, "b": pd.array([True] * 100_000)})

# master
%timeit df.groupby("a").sum()                                                                                                                                                                  
# 5.15 ms ± 18 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

# branch
%timeit df.groupby("a").sum()                                                                                                                                                                  
# 1.94 ms ± 10.8 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
```