BUG: Categorical.take with fill_value
We need to translate the user-provided `fill_value` to the `code` for that category before taking.

```
In [1]: import pandas as pd

In [2]: c = pd.Categorical(['a', 'b', 'c'])

In [3]: c.take([0, 1, -1], fill_value='a', allow_fill=True)
```

```pytb
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-3-97f966c41cb2> in <module>
----> 1 c.take([0, 1, -1], fill_value='a', allow_fill=True)

~/sandbox/pandas/pandas/core/arrays/categorical.py in take_nd(self, indexer, allow_fill, fill_value)
   1806         codes = take(self._codes, indexer, allow_fill=allow_fill,
   1807                      fill_value=fill_value)
-> 1808         result = self._constructor(codes, dtype=self.dtype, fastpath=True)
   1809         return result
   1810

~/sandbox/pandas/pandas/core/arrays/categorical.py in __init__(self, values, categories, ordered, dtype, fastpath)
    371
    372         if fastpath:
--> 373             self._codes = coerce_indexer_dtype(values, categories)
    374             self._dtype = self._dtype.update_dtype(dtype)
    375             return

~/sandbox/pandas/pandas/core/dtypes/cast.py in coerce_indexer_dtype(indexer, categories)
    603     length = len(categories)
    604     if length < _int8_max:
--> 605         return ensure_int8(indexer)
    606     elif length < _int16_max:
    607         return ensure_int16(indexer)

~/sandbox/pandas/pandas/_libs/algos_common_helper.pxi in pandas._libs.algos.ensure_int8()
    413             return arr
    414         else:
--> 415             return arr.astype(np.int8, copy=copy)
    416     else:
    417         return np.array(arr, dtype=np.int8)

ValueError: invalid literal for int() with base 10: 'a'
```