BUG: update cython to fix segfault accessing __kwdefaults__
- [x] closes #26127
- [x] tests added / passed
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

This ups the cython minimum version to fix bugs as seen in #26127. I've added a test which goes through the members of `_libs` to check that they don't segfault when accessed. If you manually install 0.28.2 and run the test, you'll see it segfault.

I'm not sure how to place this change in the "whatsnow", so I'd be happy if I could get some advice there (and anywhere else I've gone wrong, of course).