ENH: Provide a method to convert DataFrames to structured arrays.
Structured arrays can be significantly faster than record arrays:
```
In [1]: s = np.random.rand(1000, 2).astype([("a", float), ("b", float)]); r = s.view(np.recarray)

In [2]: %timeit s["a"]
69.4 ns ± 0.0733 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

In [3]: %timeit r["a"]
1.2 µs ± 10 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

In [4]: %timeit r.a
1.86 µs ± 7.42 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
```
Therefore it can be desirable to convert DataFrames to
structured arrays rather than record arrays (the recipe
for the conversion directly comes from the numpy docs at
https://numpy.org/doc/stable/user/basics.rec.html#record-arrays,
ignoring the handling of non-record inputs).

Currently the implementation simply reuses the to_record implementation.

- [ ] 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
