BUG: PyArrow dtypes were not supported in the interchange protocol
fixes a few things:

- closes #57762
- closes #57761
- closes #57664

thanks for your review! I've updated an simplified a bit Thanks @MarcoGorelli  thanks both!

> keep chipping away

😄 we're getting there

I didn't set a milestone, is it OK if I backport this to 2.2.x? @meeseeksmachine please backport to 2.2.x @meeseeksdev backport 2.2.x Owee, I'm MrMeeseeks, Look at me.

There seem to be a conflict, please backport manually. Here are approximate instructions:

1. Checkout backport branch and update it.

```
git checkout 2.2.x
git pull
```

2. Cherry pick the first parent branch of the this PR on top of the older branch:
```
git cherry-pick -x -m1 710720e6555c779a6539354ebae59b1a649cebb3
```

3. You will likely have some merge/cherry-pick conflict here, fix them and commit:

```
git commit -am 'Backport PR #57764: BUG: PyArrow dtypes were not supported in the interchange protocol'
```

4. Push to a named branch:

```
git push YOURFORK 2.2.x:auto-backport-of-pr-57764-on-2.2.x
```

5. Create a PR against branch 2.2.x, I would have named this PR:

> "Backport PR #57764 on branch 2.2.x (BUG: PyArrow dtypes were not supported in the interchange protocol)"

And apply the correct labels and milestones.

Congratulations — you did some good work! Hopefully your backport PR will be tested by the continuous integration and merged soon!

Remember to remove the `Still Needs Manual Backport` label once the PR gets merged.

If these instructions are inaccurate, feel free to [suggest an improvement](https://github.com/MeeseeksBox/MeeseeksDev).
                