API: CategoricalIndex for value_counts
Closes https://github.com/pydata/pandas/issues/10704

Changes `Categorical.value_counts` to return
a Series with a CategoricalIndex. Previously
the Series and an Index.

Just some random observations on the convenience of working with categoricals:
The code here could be simplified if
1. `Categorical.categories` was always a `Categoricalndex`
2. We were consistent about whether `NaN` is allowed in `.categories`

I thought that 1. would be a good idea, but I'm going back on it now. I can see how it'd be useful for `Categorical.categories` to be a more specific type like DatetimeIndex. For 2, I'd personally I'll always keep `NaN` out of my categories, but I could be missing a use case where it's needed.

> Categorical.categories was always a Categoricalndex

This seems slightly redundant to me. Both the categorical and the categorical index would hold an array of codes, and the categorical index would hold on to a normal index as its `categories` anyways.

> For 2, I'd personally I'll always keep NaN out of my categories, but I could be missing a use case where it's needed

Agreed.
 >  Categorical.categories was always a Categoricalndex 

I would rather say: is never a CategoricalIndex. As the index should reflect the dtype of the categories, which is never a Categorical?
 BTW, why would you want a CategoricalIndex (as the categories)? Is there a specific use case you have in mind where you need it?
 > BTW, why would you want a CategoricalIndex

I was wanting to reindex the Series of counts with all the categories to include the zero counts, `counts.reindex(self.categories)`.
 I wasn't really able to simplify the code at all. I need that `cat_idx` to get from keys _that are present_(non-zero count) and from there to all categories.
 Thanks to Jeff, the change is _much_ simpler now.
 lgtm.
