PERF: Categorical getitem perf
Convert to an array earlier on.
Closes https://github.com/pandas-dev/pandas/issues/30744
Master

```python
   ...: %timeit data[list_]
1.44 ms ± 5.3 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

```

This PR

```
   ...: %timeit data[list_]
740 µs ± 5.92 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

```

Will post the pre-indexing with NA timing in a bit.

Edit:

7b350997467f868aa563c42cfec1d0a3bd2a9887 (1 commit prior to NA indexing)

```
728 µs ± 7.57 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
```

so we're back to where we were. cool, can you add an asv > can you add an asv

I think Joris caught this because the existing asv `CategoricalSlicing.time_getitem_list` https://pandas.pydata.org/speed/pandas/#categoricals.CategoricalSlicing.time_getitem_list?commits=6efc2379-b9de33e3 LGTM So I reported this for Categorical (indeed because of the existing benchmark), but a similar change was made for other dtypes in https://github.com/pandas-dev/pandas/pull/30308. Also the boolean and integer (and numpy) arrays have the same issue. 