REF: Index._intersection
Follow the same pattern as Index._union.  Motivated by trying to get stricter typing in CategoricalIndex._shallow_copy, which is blocked by pinning down return types for set ops.