ENH: Add nsmallest/nlargest method support for extension array
When dealing with regular series, one can do : 
```python
import numpy as np
import pandas as pd
s = pd.Series(np.arange(10))
s.nsmallest(1) # returns a series contaning "0" as expected
```

When using an extension array (user-defined in my case), calling the `.nsmallest` method raises a TypeError (full message below):
```python
import numpy as np
import physipandas
from physipy import m
import pandas as pd
sq = pd.Series(np.arange(10)*m, dtype='physipy[m]')
sq.nsmallest(1)
```

```
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/var/folders/5k/bf4syt7x1zjbhc6b28srzzym0000gn/T/ipykernel_72417/2048250381.py in <module>
      4 import pandas as pd
      5 sq = pd.Series(np.arange(10)*m, dtype='physipy[m]')
----> 6 sq.nsmallest(1)

/opt/anaconda3/lib/python3.8/site-packages/pandas/core/series.py in nsmallest(self, n, keep)
   3861         dtype: int64
   3862         """
-> 3863         return algorithms.SelectNSeries(self, n=n, keep=keep).nsmallest()
   3864 
   3865     @doc(

/opt/anaconda3/lib/python3.8/site-packages/pandas/core/algorithms.py in nsmallest(self)
   1220 
   1221     def nsmallest(self):
-> 1222         return self.compute("nsmallest")
   1223 
   1224     @staticmethod

/opt/anaconda3/lib/python3.8/site-packages/pandas/core/algorithms.py in compute(self, method)
   1253         dtype = self.obj.dtype
   1254         if not self.is_valid_dtype_n_method(dtype):
-> 1255             raise TypeError(f"Cannot use method '{method}' with dtype {dtype}")
   1256 
   1257         if n <= 0:

TypeError: Cannot use method 'nsmallest' with dtype physipy[m]
```

This seems to happen because the extension dtype is not "registered" to `is_valid_dtype_n_method`.
Would it be feasable to support `nsmallest`/`nlargest` for extensions ?

pandas version : 1.3.0.