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]
```