ENH: Use pyarrow.compute for unique, dropna
- [x] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [x] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).


Thanks @mroeschke for the PR. my understanding of #42613 is that we should no longer be implementing any fallback behavior. (there is not definitive policy on that there, so have not yet removed the fallbacks already implemented for StringArray)

That issue applies specifically to StringArray but with the work you have done/doing to have a common base class for pyarrow backed EAs, we may be adding fallback behaviour for the pyarrow backed StringArray? > my understanding of #42613 is that ...

more of the discussion was actually in #42597 Ah thanks, I wasn't aware of this discussion.

My prior, related PR's so far have just been moving existing methods, so no fallback behavior should have been introduced I think.

For this PR, I will just remove the super calls for now and reintroduce them later if we decide on a different fallback policy > Ah thanks, I wasn't aware of this discussion.
> 
> My prior, related PR's so far have just been moving existing methods, so no fallback behavior should have been introduced I think.
> 
> For this PR, I will just remove the super calls for now and reintroduce them later if we decide on a different fallback policy

comments on the other issues is we can show a PerformanceWarning if we are falling back. But let's do that as a pre-cursor  actually if you can do that move in this PR and I think this also needs a whatsnew note. ping on green. Here are the perf differences (@simonjayhawkins is correct that the array's (or any ExtentionArray's?) dropna is not hooked up to `Series/index/DataFrame.dropna()` yet)

PR
```
In [1]: import pyarrow as pa
   ...: pa.__version__
   ...:
Out[1]: '7.0.0'

In [2]: ser = pd.Series(["1", np.nan] * 100_000, dtype="string[pyarrow]")

In [4]: %timeit ser.unique()
   ...:
1.3 ms ± 6.59 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

In [3]: %timeit ser.array.dropna()
820 µs ± 1 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
```

main
```
In [1]: ser = pd.Series(["1", np.nan] * 100_000, dtype="string[pyarrow]")
   ...:

In [2]: %timeit ser.unique()
   ...:
24.4 ms ± 181 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)

In [2]: %timeit ser.array.dropna()
1.21 ms ± 2.45 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
``` thanks @mroeschke really nice