ENH: Let Categorical.rename_categories take a callable
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

This PR allows ``Categorical.rename_categories`` to take a callable as its argument.

This is useful for quickly changing the categories the same way for all categories, e.g.

```python
>>> pd.Categorical(['a', 'b']).rename_categories("cat_{}".format)
[cat_a, cat_b]
Categories (2, object): [cat_a, cat_b]
```
Updated and all green. BTW, on Github, in the timeline this is added to the 0.22 milestone, but on the right side overview, it says milestone 0.23.

Seems to be something strange going on? thanks @topper-123 

we are going to release 0.22 shortly with #18876 only, everything else gets moved to 0.23.