DEPR: dropping nuisance columns in DataFrameGroupby apply, agg, transform
- [x] closes #21664
- [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

Discussed on this week's call.
In `groupby._transform`, I think we can always use `_wrap_transform_fast_result` in the case of a string aggregator instead of falling back to `_transform_general` for certain cases. The only thing stopping this now is it removes the warnings added here. Digging into it, I'm finding some inconsistencies:

```
df = DataFrame(
    {
        "A": ["foo", "bar", "foo", "bar", "foo", "bar", "foo", "foo"],
        "B": ["one", "one", "two", "three", "two", "two", "one", "three"],
        "C": np.random.randn(8),
        "D": np.random.randn(8),
    }
)
df.groupby("A").mean()
df.groupby("A").agg("mean")
df.groupby("A").agg(np.mean)
df.groupby("A").transform("mean")  # <--- warns
df.groupby("A").transform(np.mean)  # <--- warns
df.groupby("A").apply("mean")
df.groupby("A").apply(np.mean)  # <--- warns
```

Should all, just the `np.mean`, or none of these warn? From the [whatsnew note](https://pandas.pydata.org/docs/whatsnew/v1.3.0.html#deprecated-dropping-nuisance-columns-in-dataframe-reductions-and-dataframegroupby-operations), it seemed to me that all of these should warn. > Should all, just the np.mean, or none of these warn? From the [whatsnew note](https://pandas.pydata.org/docs/whatsnew/v1.3.0.html#deprecated-dropping-nuisance-columns-in-dataframe-reductions-and-dataframegroupby-operations), it seemed to me that all of these should warn.

I think you're right.  IRC getting consistency across all these cases was something we punted on. Thanks, I'll take a deeper look into emitting the warning in the right places. I missed that the default of `numeric_only` is still currently True, so many of the above cases are currently correct. With #46072, all of the `.mean()` and `"mean"` forms will warn. 

~The `np.mean` should warn in all cases, but doesn't for `agg`. I plan to be putting up a PR for this.~
I'm no longer certain on this. `agg` intercepts np.mean and replaces it with 'mean', which is why it doesn't warn. `transform` tries to do the same, but ends up having to call `transform_item_by_item` instead. `apply` also intercepts and replaces with 'mean', but then uses `DataFrame._reduce` which warns.