ENH: Use of NamedTuple instead of Tuple for MultiIndex
#### Is your feature request related to a problem?

Simply from an ergonomic point of view, when using MultiIndex, it would be worth using a list of NamedTuple instead of Tuple, so that level name can be directly used to call index values.

#### Describe the solution you'd like

Currently,

```python
import pandas as pd
midx = pd.MultiIndex.from_product([['value1','value2'],[1]], names=['level1','level2'])
df = pd.DataFrame(0,index=[1,2],columns=midx)
df.columns[0]['level1']
```
returns:
```python
TypeError: tuple indices must be integers or slices, not str
```

Would this be a NamedTuple, this would return the correct result: 'value1'
Bests,

PS: and thanks for your awesome work!