ENH/CLN: add CategoricalGrouper
see #6516 

after #6516 it is possible to add a `CategoricalGrouper` subclassing `Grouper`, like how `TimeGrouper` does. It won't be user visible, but will 'clean' up things a bit.
