DataFrame with IntervalIndex: overlapping intervals cause unexpected behavior
#### Code Sample, a copy-pastable example if possible

```python
# Your code here
import pandas as pd
import numpy as np

# first example: non-overlapping intervals
cols = pd.IntervalIndex.from_tuples([(1, 2), (2, 3), (3, 4)])
data = pd.DataFrame(np.random.rand(3, 3), columns=cols)
print(data[data.columns[0]])
# 0    0.722574
# 1    0.344239
# 2    0.015408
# Name: (1, 2], dtype: float64

# second example: overlapping intervals
cols = pd.IntervalIndex.from_tuples([(1, 3), (2, 4), (3, 5)])
data = pd.DataFrame(np.random.rand(3, 3), columns=cols)
print(data[data.columns[0]])
#      (2, 4]    (1, 3]
# 0  0.772658  0.901796
# 1  0.482587  0.870468
# 2  0.215840  0.190018
```
#### Problem description

We use `pandas` `DataFrame`s to store spectra of energetic particles measured on the Moon. The DataFrame contains the counts of particles detected, where the index is then usually the time when the spectrum was acquired, and the columns are different bins for particle energy. Due to the properties of the instrument, these bins can overlap for certain species of particles - e.g. a particle measured in the first bin can have an energy between 1 and 3, while a particle measured in the second bin can have energies between 2 and 4 in the example above.

When we want to access one of the columns of the spectrum by its name (which is needed to apply some corrections which are different for each energy bin), we can use `data[data.columns[0]]` or iterate over the columns in a for loop, such as `for bin in data: do_something(data[bin])`. However, in the case where the intervals are overlapping, this does not seem to work correctly, as seen above. Contrary to what is stated [in the docs](https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#basics), the selection does not return just a single columns as a `Series`, but a new `DataFrame` containing the column we want, but also all columns that overlap with it.

I see why this might be useful in some cases, but it's unexpected and not really documented as far as I saw. With this behavior, single columns cannot be selected based on their names anymore. Instead, I can only select them based on their index using `.iloc[:, i]`.

#### Expected Output

```python
# (1, 3]
# 0  0.901796
# 1  0.870468
# 2  0.190018
```

#### Output of ``pd.show_versions()``

<details>

INSTALLED VERSIONS
------------------
commit: None
python: 3.7.2.final.0
python-bits: 64
OS: Linux
OS-release: 4.19.0-5-amd64
machine: x86_64
processor: 
byteorder: little
LC_ALL: None
LANG: de_DE.UTF-8
LOCALE: de_DE.UTF-8
pandas: 0.24.2
pytest: 4.3.0
pip: 10.0.1
setuptools: 39.1.0
Cython: None
numpy: 1.16.1
scipy: 1.2.1
pyarrow: None
xarray: None
IPython: None
sphinx: 1.8.4
patsy: None
dateutil: 2.8.0
pytz: 2018.9
blosc: None
bottleneck: None
tables: None
numexpr: None
feather: None
matplotlib: 3.0.2
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
lxml.etree: None
bs4: None
html5lib: None
sqlalchemy: None
pymysql: None
psycopg2: None
jinja2: 2.10
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None
gcsfs: None

</details>
