[BUG] Fixed behavior of DataFrameGroupBy.apply to respect _group_selection_context
- [x] closes #28549 
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

There were lots of inconsistencies among tests about whether or not `apply` should return the grouper column(s), and almost no testing on the impact of `as_index` on `apply` operations.  This hopefully should provide better coverage, and also normalize the behavior everywhere. 