ENH: Implement np.strings.slice as a gufunc by ArvidJB · Pull Request #27789 · numpy/numpy

@ArvidJB

This commit adds a `np.strings.slice` function which
vectorizes slicing of string arrays. For example
```
    >>> a = np.array(['hello', 'world'])
    >>> np.char.slice(a, 2)
    array(['he', 'wo'], dtype='<U5')
```

This supports fixed-length and variable-length string dtypes.
It also supports broadcasting the start, stop, step args:
```
    >>> b = np.array(['hello world', 'γεια σου κόσμε', '你好世界', '👋 🌍️'], dtype=np.dtypes.StringDType())
    >>> np.strings.slice(b, [3, 0, 2, 1], -1)
    array(['lo worl', 'γεια σου κόσμ', '世', ' 🌍'], dtype=StringDType())
```

Closes numpy#8579