Ensure _group_selection_context is always reset
Context managers will resume with an exception if the with block calling them fails.
This happening is not an excuse to not clean up.

- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] passes `black pandas`
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

Found by inspecting the code, not by actually finding a failing example.

Thanks @eric-wieser for the PR

(just adding a note: #35314 uses _group_selection_context more, so if #35314 gets backported, maybe this should also be backported) Thanks @eric-wieser 