Syntax requirements of MultiIndex DataFrame overly verbose compared to Panel
#### Code Sample

```python
import pandas
import numpy
import itertools

# generate some test data
dates  = pandas.date_range('20180101', periods=3)
stocks = ['AAPL', 'GOOG', 'MSFT', 'AMZN', 'FB']
spread = pandas.Series(numpy.random.rand(3), index=dates)

# create panel and set the spread between two stocks for all dates
pnl = pandas.Panel(items=dates, major_axis=stocks, minor_axis=stocks, dtype=float)
pnl.loc[:,'GOOG','MSFT'] = spread

# create multiindex dataframe and set the spread between two stocks for all dates
tuples = list(itertools.product(dates, stocks))
index  = pandas.MultiIndex.from_tuples(tuples)
df     = pandas.DataFrame(index=index, columns=stocks, dtype=float)
df.loc[pandas.IndexSlice[:, 'GOOG'], 'MSFT'] = spread.values

day = dates[0]

print(pnl[day])
print(df.xs(day))
```

**output:**

```
      AAPL  GOOG      MSFT  AMZN  FB
AAPL   NaN   NaN       NaN   NaN NaN
GOOG   NaN   NaN  0.682531   NaN NaN
MSFT   NaN   NaN       NaN   NaN NaN
AMZN   NaN   NaN       NaN   NaN NaN
FB     NaN   NaN       NaN   NaN NaN
      AAPL  GOOG      MSFT  AMZN  FB
AAPL   NaN   NaN       NaN   NaN NaN
GOOG   NaN   NaN  0.682531   NaN NaN
MSFT   NaN   NaN       NaN   NaN NaN
AMZN   NaN   NaN       NaN   NaN NaN
FB     NaN   NaN       NaN   NaN NaN
```

#### Problem description

Since the deprecation of `Panel`, the pandas alternative, `MultiIndex DataFrame`, requires significantly more boilerplate and suffers from a more verbose syntax.

***Construction:***

Whilst the creation of a `Panel` takes 1 line

```python
pnl = pandas.Panel(items=dates, major_axis=stocks, minor_axis=stocks, dtype=float)
```

The `MultiIndex DataFrame` takes 3, 1 to create the list of tuples, 1 to create the `MultiIndex` and 1 to create the `DataFrame`

```python
tuples = list(itertools.product(dates, stocks))
index  = pandas.MultiIndex.from_tuples(tuples)
df     = pandas.DataFrame(index=index, columns=stocks, dtype=float)
```

***Selection:***

Selecting all dates for a particular stock combination in the above example is a very terse syntax for `Panel`:

```python
pnl.loc[:,'GOOG','MSFT'] = spread
```

Whereas for a `MultiIndex DataFrame` a `IndexSlice` is required for the index, and then the column is separate:

```python
df.loc[pandas.IndexSlice[:, 'GOOG'], 'MSFT'] = spread.values
```
The syntax is (IMHO) overly verbose and inelegant when compared to `Panel`.

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

<details>
INSTALLED VERSIONS
------------------
commit: None
python: 3.6.5.final.0
python-bits: 64
OS: Linux
OS-release: 4.15.0-23-generic
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8

pandas: 0.22.0
pytest: None
pip: 10.0.1
setuptools: 39.2.0
Cython: None
numpy: 1.14.4
scipy: None
pyarrow: None
xarray: None
IPython: 6.4.0
sphinx: None
patsy: None
dateutil: 2.7.3
pytz: 2018.4
blosc: None
bottleneck: None
tables: None
numexpr: None
feather: None
matplotlib: 2.2.2
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
lxml: None
bs4: None
html5lib: None
sqlalchemy: None
pymysql: None
psycopg2: None
jinja2: None
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None
</details>
