BUG: groupby with as_index=False shouldn't modify grouping columns
- [x] closes #32579
- [x] closes #21090
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

This makes any groupby function that uses _GroupBy._make_wrapper to act on self._obj_with_exclusions rather than self._selected_obj, in parallel with the cython paths. Also similar to the cython paths, the grouping columns are added back onto the result in _wrap_applied_output. Similar remarks apply to nunique, which does not go through the _make_wrapper.

After finishing this, I found PR #29131. This PR does not change the behavior of calling apply() itself, only the previous code paths that would internally go through apply. Also, the change made there does not have any impact when as_index is False.
@jreback Changes made, checks are green. @jreback changes made and green. @jreback Changes made and tests pass. It seemed best to me to add a new api breaking section for nunique when as_index=True. While the code changes to nunique were the same for both issues, from an api standpoint I think they are different cases. If you'd like me to combine into one section though, I can do that. thanks @rhshadrach fixing groupby bugs sometimes are non-trivial in time, thanks for sticking with it and keep em coming!