BUG: Groupby with as_index=False raises error when type is Category
- [x] closes #32599
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

This regression was a symptom of `DataFrameGroupBy.size` ignoring `as_index=False`. Fixing this now makes the result either a frame or series, so where the internals use `size()` they now use `grouper.size()` which always returns a series.

I also implemented @dsaxton's suggestion to make the column named "size" when `as_index=False` (https://github.com/pandas-dev/pandas/issues/5755#issuecomment-522321259).