[WIP] Make Index.values read-only
- [ ] closes #33001
- [ ] tests added / passed
- [ ] passes `black pandas`
- [ ] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [ ] whatsnew entry

This is a PR for looking around enforcing immutability of `pd.Index` objects. It will be a draft, but the main idea is to show what tests fail and what would need to change for this to be implemented. Because of this, I'm going to add some commits incrementally, so there is a history in the build logs.
@ivirshup are you still interested in working on this? I've gotten a little stuck on the cython part. Using the cython 3.0 alpha, the errors about using a `const` fused type go away, but are replaced by parse errors of the generated c code. This seems to only be the case if the types are imported from numpy.

I think it could make sense for someone who has more experience with cython to take over, or at least figure out that part. I'm still interested, but I'm not sure I have the time to learn that much about cython at the moment. see if you can merge master and get this passing @jreback, IIRC this requires cython 3. Since master can't compile with cython 3 (https://github.com/pandas-dev/pandas/issues/34014), I think this is stuck. closing as inactive, we can reopen if you like after cy3 is available.