BUG: should constructing Index from a Series make a copy?
From a comment of @jbrockmendel at https://github.com/pandas-dev/pandas/pull/41878#issuecomment-881557871:

```
ser = pd.Series(range(5))
idx = pd.Index(ser)
ser[0] = 10
>>> idx[0]
10
```

In the above, we create an Index from a Series, then mutate the Series, which also updated the Index, while an Index is assumed to be immutable. 

Changing the example a bit, you can obtain wrong values with indexing this way:

```
ser = pd.Series(range(5))
idx = pd.Index(ser)

ser.index = idx

>>> ser[0]
0
>>> ser.iloc[0] = 10
>>> ser[0]
10
>>> ser
10    10
1      1
2      2
3      3
4      4
dtype: int64
```

So `ser[0]` is still giving a result, while that key doesn't actually exist in the Series' index at that point.

I know that generally we consider this a user error if you would do this with a numpy array (`idx = pd.Index(arr)` and mutating the array), but here you get that by only using high-level pandas objects itself. In which case we should prevent this from happening?