ENH: Categorical.unique can keep same dtype
There are situations where we want to keep the same dtype as in the original after applying `unique` For example

```python
>>> dtype = pd.categoricalDtype(['very good', 'good', 'neutral', 'bad', 'very bad'], ordered=True)
>>> cat = pd.Categorical(['good','good', 'bad', 'bad'], dtype=dtype)
>>> cat
[good, good, bad, bad]
Categories (5, object): [very good < good < neutral < bad < very bad]
>>> cat.unique().dtype == cat.dtype
False  # this is a bug IMO, but others may not agree
```

Even if it's not a bug, there are situations where we want the comparison above to return True. To alleviate the above, I've added a new parameter, so we can do

```
>>> cat.unique(remove_unused_categories=False).dtype == cat.dtype
True
```

Helps #18291, but does not close the issue.
