Improve dictionary map performance on category series, fixes #23785
- [x] closes #23785
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

Uses the built-in categorical series mapper when mapping categorical series with dictionaries or series (i.e., as opposed to with lambada functions) instead of reindexing in order to improve performance.

## benchmarking with asv
I added some new benchmarks to test mapping performance -- performance improves substantially when mapping with dicts or series against categorical series
```
       before           after         ratio
     [181f972d]       [184feb77]
     <master~1>                 
-     1.90±0.01ms          976±8μs     0.51  series_methods.Map.time_map('dict', 'category')
-     1.33±0.01ms          418±2μs     0.31  series_methods.Map.time_map('Series', 'category')

SOME BENCHMARKS HAVE CHANGED SIGNIFICANTLY.
```

## benchmarking using example from #23785
upstream master
```python
import pandas as pd
print(pd.__version__)
# 0.24.2
x = pd.Series(list('abcd') * 1000).astype('category')
mapper = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
%timeit x.map(mapper)
# 904 µs ± 3.06 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%timeit x.map(lambda a: mapper[a])
# 254 µs ± 997 ns per loop (mean ± std. dev. of 7 runs, 1000 loops each)
```

this diff
```python
import pandas as pd
print(pd.__version__)
# 0.25.0.dev0+379.g184feb77e
x = pd.Series(list('abcd') * 1000).astype('category')
mapper = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
%timeit x.map(mapper)
# 622 µs ± 1.08 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
%timeit x.map(lambda a: mapper[a])
# 256 µs ± 4.72 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
```