TST: groupby.first/last retains categorical dtype
- [x] closes #33090
- [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
- [ ] whatsnew entry

thanks @debnathshoham 

since we get a lot of PRs, periodically rebasing yours is a good idea as it moves them to the front of the queue (assuming they are ready to go)