BUG: MultiIndex name lost when using .loc with missing index values
#### Code Sample, a copy-pastable example if possible
```python
# Your code here
import pandas as pd

K = 10000
l1 = list(range(K))
l2 = list(range(K))
index = pd.MultiIndex.from_tuples(list(zip(l1, l2)), names=['first', 'second'])
data = [[1, 2]] * K
df = pd.DataFrame(data, index=index, columns=['c1', 'c2'])

print(df)
# index name lost if one of the loc index is missing in df
index2 = [(i, i) for i in range(5)] + [(-1, -1)] + [(i, i) for i in range(5)]

# index name is NOT lost even if the missing index value is at the begin or end or the loc index
index2 = [(i,i) for i in range(10)] + [(-1,-1)]
# index name is NOT lost as long as all loc index are found in df
index2 = [(i,i) for i in range(10)] + [(i,i) for i in range(10)]
df1 = df.loc[index2, :]
print(df1)
```

#### Problem description
The index names get lost while using .loc to take part of a full DataFrame. 
The problem appeared ONLY when
1. the full dataframe is with a MultiIndex
2. some of the index values in .loc are missing in the full dataframe
3. ths missing index values are in the middle of the list in .loc, not at the begin or end of the list.

#### Expected Output


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

INSTALLED VERSIONS
------------------
commit: None
python: 3.6.3.final.0
python-bits: 64
OS: Windows
OS-release: 10
machine: AMD64
processor: Intel64 Family 6 Model 69 Stepping 1, GenuineIntel
byteorder: little
LC_ALL: None
LANG: None
LOCALE: None.None

pandas: 0.22.0
pytest: None
pip: 10.0.1
setuptools: 36.5.0.post20170921
Cython: None
numpy: 1.14.3
scipy: 1.1.0
pyarrow: None
xarray: None
IPython: None
sphinx: None
patsy: None
dateutil: 2.7.2
pytz: 2018.4
blosc: None
bottleneck: None
tables: None
numexpr: 2.6.5
feather: None
matplotlib: 2.2.2
openpyxl: 2.5.3
xlrd: 1.1.0
xlwt: None
xlsxwriter: 1.0.5
lxml: 4.2.1
bs4: None
html5lib: None
sqlalchemy: 1.2.7
pymysql: None
psycopg2: None
jinja2: None
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None


</details>
