Inconsistent behaviour of __getitem__ and .loc with slices for DataFrames with MultiIndex columns
#### Code Sample

```python
import numpy as np
import pandas as pd

data = np.zeros((3, 6), dtype=np.int16)
col_index = pd.MultiIndex.from_product([['A', 'B', 'C'], ['t1', 't2']])
df = pd.DataFrame(data, columns=col_index)
```

```python
>>> df
   A     B     C   
  t1 t2 t1 t2 t1 t2
0  0  0  0  0  0  0
1  0  0  0  0  0  0
2  0  0  0  0  0  0
```

```python
>>> df['A']
   t1  t2
0   0   0
1   0   0
2   0   0
```

```python
>>> df[:, 't1']
Traceback (most recent call last):
  File "<ipython-input-20-c0e18fe6137b>", line 1, in <module>
    df[:, 't1']
  File "c:\users\paolo\code\ipython\lib\site-packages\pandas\core\frame.py", line 2926, in __getitem__
    return self._getitem_multilevel(key)
  File "c:\users\paolo\code\ipython\lib\site-packages\pandas\core\frame.py", line 2972, in _getitem_multilevel
    loc = self.columns.get_loc(key)
  File "c:\users\paolo\code\ipython\lib\site-packages\pandas\core\indexes\multi.py", line 2406, in get_loc
    return self._engine.get_loc(key)
  File "pandas\_libs\index.pyx", line 665, in pandas._libs.index.BaseMultiIndexCodesEngine.get_loc
TypeError: '(slice(None, None, None), 't1')' is an invalid key
```

but

```python
>>> df.loc[:, (slice(None), 't1')]
   A  B  C
  t1 t1 t1
0  0  0  0
1  0  0  0
2  0  0  0
```

#### Problem description

Dataframes with `MultiIndex` columns aren't able to make a "cross section" slice (i.e., selecting all sub-columns of a certain label for every "major" column). I know this behaviour is provided by [`DataFrame.xs` & company](http://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html#cross-section), but I don't see why it is beneficial to ignore this inconsistency and make a separate method for the purpose, since `DataFrame.__getitem__` already interprets a tuple indexer as a column indexing when `columns` is a `MultiIndex` (but it just supports selecting exactly one label for each sub-index). 


#### Expected Output

`df[:, 't1']` doesn't throw; it returns a `DataFrame` with only the `t1` sub-columns from columns `A`, `B`, and `C` (like the one returned by `df.loc[:, (slice(None), 't1')]`.

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

<details>

```text
INSTALLED VERSIONS
------------------
commit: 998a0deea39f11fa06071af77cc1afba65900330
python: 3.7.3.final.0
python-bits: 64
OS: Windows
OS-release: 10
machine: AMD64
processor: Intel64 Family 6 Model 158 Stepping 10, GenuineIntel
byteorder: little
LC_ALL: None
LANG: None
LOCALE: None.None
pandas: 0.25.0.dev0+605.gb730ab35e
pytest: 4.5.0
pip: 19.1.1
setuptools: 41.0.1
Cython: 0.29.7
numpy: 1.16.3
scipy: 1.3.0
pyarrow: 0.13.0
xarray: 0.12.1
IPython: 7.5.0
sphinx: 2.0.1
patsy: 0.5.1
dateutil: 2.8.0
pytz: 2019.1
blosc: 1.8.1
bottleneck: 1.2.1
tables: 3.5.1
numexpr: 2.6.9
feather: None
matplotlib: 3.1.0
openpyxl: 2.6.2
xlrd: 1.2.0
xlwt: 1.3.0
xlsxwriter: 1.1.8
lxml.etree: 4.3.3
bs4: 4.7.1
html5lib: 1.0.1
sqlalchemy: 1.3.3
pymysql: None
psycopg2: None
jinja2: 2.10.1
s3fs: 0.2.1
fastparquet: 0.3.1
pandas_gbq: None
pandas_datareader: None
gcsfs: None
```

</details>
