REF: mix NDArrayBacked into Categorical, PandasArray
- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [ ] whatsnew entry

does this have any perf implications?

pls rebase > does this have any perf implications?

```
In [3]: cat = pd.Categorical(range(5))

In [4]: %timeit cat.copy()
315 ns ± 5.19 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)  <-- PR
802 ns ± 7.08 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)  <-- master
``` Rebased + green great!