ENH: support the Arrow PyCapsule Interface on pandas.DataFrame (export)
See https://github.com/apache/arrow/issues/39195 for some context, and https://arrow.apache.org/docs/dev/format/CDataInterface/PyCapsuleInterface.html for the new Arrow specification.

For now this PR just implements the stream support on DataFrame (using pyarrow under the hood to do the actual conversion). We should also consider adding the array and schema protocol methods. 

We could add similar methods on Series, but that has less of an exact equivalent in Arrow terms (e.g. it would loose the index).

This PR also only implements exporting a pandas DataFrame through the protocol, not adding support to our constructors to consume (import) any object supporting the protocol.
Very cool. Is this ready for review or sitting in draft for futher development? Whatever is here is already ready for review. 

As mentioned in the top post, we should also consider adding `__arrow_c_schema__` (because we don't have a custom schema object that can expose this, although DataFrame is of course not a schema object, so it's not exactly fitting)

I should probably also add some details about how the conversion is done (essentially the defaults of `pyarrow.Table.from_pandas`, at the moment, but for example we can document that this converts the Index into a column, except for RangeIndex) merging then, as discussed