BUG: Preserve categorical dtypes in MultiIndex levels (#13743)
- [x] closes #13743
- [x] tests added / passed
- [x] passes `git diff upstream/master | flake8 --diff`
- [x] whatsnew entry

This commit modifies `MultiIndex.from_array` and `MultiIndex.from_product`.

Example:

``` python
cat = pd.Categorical(['a', 'b'], categories=list("bac"), ordered=True)
mi = pd.MultiIndex.from_arrays([cat, cat])

mi.levels[0]
Out[55]: CategoricalIndex(['b', 'a', 'c'], categories=['b', 'a', 'c'], ordered=True, dtype='category')

mi.get_level_values(0)
Out[56]: CategoricalIndex(['a', 'b'], categories=['b', 'a', 'c'], ordered=True, dtype='category')
```

Previously, the results were:

``` python
mi.levels[0]
Out[345]: Index(['b', 'a', 'c'], dtype='object')

mi.get_level_values(0)
Out[346]: Index(['a', 'b'], dtype='object')
```

This modification makes `groupby`, `pivot`, and `set_index` preserve categorical types in indexes.
