BUG: groupby.transform(name) validates name is an aggregation
closes #14274
closes #19354
closes #22509 
- [ ] tests added / passed
- [X] whatsnew entry

This is a long-standing bug. Effectively, it makes `transform('rank')` synonymous with `g.rank()`  and same for other transformations.

We could also resolve this by restricting the `g.transform(name)` whitelist to only callables and aggs-to-be-broadcasted, telling users to use the named method directly, i.e `g.rank()` instead. Not a problem keeping this path working though, it just needs to return correct results.

Also, continuing some cleanups after #27467 