ENH/BUG: Use Kleene logic for groupby any/all
State: closed

- [x] closes #37506
- [x] closes #40585
- [x] closes #33449 
- [x] tests added / passed
- [x] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [x] whatsnew entry

Built on #40811

ASV's don't look affected:

<details>

```
before           after         ratio
     [3b4b193d]       [423f43fc]
     <master>         <enh/any_all_kleene>
          216±8ms          205±4ms     0.95  groupby.GroupByCythonAgg.time_frame_agg('float64', 'all')
          208±8ms          197±3ms     0.95  groupby.GroupByCythonAgg.time_frame_agg('float64', 'any')
         162±10μs          139±4μs    ~0.86  groupby.GroupByMethods.time_dtype_as_field('datetime', 'all', 'direct')
         161±20μs          138±9μs    ~0.86  groupby.GroupByMethods.time_dtype_as_field('datetime', 'all', 'transformation')
         159±10μs          142±5μs    ~0.90  groupby.GroupByMethods.time_dtype_as_field('datetime', 'any', 'direct')
         160±10μs          140±5μs    ~0.88  groupby.GroupByMethods.time_dtype_as_field('datetime', 'any', 'transformation')
          109±8μs         113±10μs     1.04  groupby.GroupByMethods.time_dtype_as_field('float', 'all', 'direct')
         103±10μs          109±9μs     1.06  groupby.GroupByMethods.time_dtype_as_field('float', 'all', 'transformation')
         113±20μs         132±10μs    ~1.17  groupby.GroupByMethods.time_dtype_as_field('float', 'any', 'direct')
         138±10μs         124±20μs    ~0.90  groupby.GroupByMethods.time_dtype_as_field('float', 'any', 'transformation')
          110±9μs          112±5μs     1.02  groupby.GroupByMethods.time_dtype_as_field('int', 'all', 'direct')
          115±9μs         109±10μs     0.94  groupby.GroupByMethods.time_dtype_as_field('int', 'all', 'transformation')
         123±10μs          115±7μs     0.94  groupby.GroupByMethods.time_dtype_as_field('int', 'any', 'direct')
         125±10μs          114±8μs     0.92  groupby.GroupByMethods.time_dtype_as_field('int', 'any', 'transformation')
         449±30μs         452±20μs     1.01  groupby.GroupByMethods.time_dtype_as_field('object', 'all', 'direct')
         442±30μs         445±20μs     1.01  groupby.GroupByMethods.time_dtype_as_field('object', 'all', 'transformation')
         470±10μs         455±30μs     0.97  groupby.GroupByMethods.time_dtype_as_field('object', 'any', 'direct')
         466±30μs          406±4μs    ~0.87  groupby.GroupByMethods.time_dtype_as_field('object', 'any', 'transformation')
          118±8μs          118±7μs     1.00  groupby.GroupByMethods.time_dtype_as_group('datetime', 'all', 'direct')
          134±9μs         132±20μs     0.99  groupby.GroupByMethods.time_dtype_as_group('datetime', 'all', 'transformation')
         131±20μs          115±9μs    ~0.88  groupby.GroupByMethods.time_dtype_as_group('datetime', 'any', 'direct')
         121±10μs          118±5μs     0.97  groupby.GroupByMethods.time_dtype_as_group('datetime', 'any', 'transformation')
         111±10μs          111±4μs     1.00  groupby.GroupByMethods.time_dtype_as_group('float', 'all', 'direct')
         109±10μs         120±10μs    ~1.11  groupby.GroupByMethods.time_dtype_as_group('float', 'all', 'transformation')
          110±9μs         127±10μs    ~1.16  groupby.GroupByMethods.time_dtype_as_group('float', 'any', 'direct')
         112±10μs         122±10μs     1.09  groupby.GroupByMethods.time_dtype_as_group('float', 'any', 'transformation')
         130±10μs          115±6μs    ~0.89  groupby.GroupByMethods.time_dtype_as_group('int', 'all', 'direct')
          133±7μs          115±7μs    ~0.86  groupby.GroupByMethods.time_dtype_as_group('int', 'all', 'transformation')
          117±5μs         123±10μs     1.05  groupby.GroupByMethods.time_dtype_as_group('int', 'any', 'direct')
         133±10μs         118±20μs    ~0.89  groupby.GroupByMethods.time_dtype_as_group('int', 'any', 'transformation')
          107±9μs         122±10μs    ~1.14  groupby.GroupByMethods.time_dtype_as_group('object', 'all', 'direct')
         113±10μs          107±5μs     0.94  groupby.GroupByMethods.time_dtype_as_group('object', 'all', 'transformation')
         135±10μs          108±4μs    ~0.80  groupby.GroupByMethods.time_dtype_as_group('object', 'any', 'direct')
          114±6μs          105±2μs     0.92  groupby.GroupByMethods.time_dtype_as_group('object', 'any', 'transformation')
```

</details>


Labels:
name: Bug
name: Groupby
name: NA - MaskedArrays
description: Related to pd.NA and nullable extension arrays

Comments:
Hello @mzeitlin11! Thanks for updating this PR. We checked the lines you've touched for [PEP 8](https://www.python.org/dev/peps/pep-0008) issues, and found:









There are currently no PEP 8 issues detected in this Pull Request. Cheers! :beers: 

##### Comment last updated at 2021-04-13 15:02:14 UTC
Greenish, failures unrelated and fixed by #40930 and flaky zip fix that just got merged
thanks @mzeitlin11 very nice!