BUG: CategoricalIndex.where nulling out non-categories
- [ ] closes #xxxx
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

ATM CategoricalIndex.where has some idiosyncratic behavior:

```
ci = CategoricalIndex(["a", "b", "c", "d"])
mask = np.array([True, False, True, False])

>>> ci.where(mask, 2)
CategoricalIndex(['a', nan, 'c', nan], categories=['a', 'b', 'c', 'd'], ordered=False, dtype='category')
```

This makes that call raise instead.

Index.where is only used in one place in reshape.merge.  Might be worth deprecating+privatizing.

also pls add a whatsnew note whatsnew added + green