Inconsistent dtypes returned by .loc when specifying multiple columns
#### Code Sample, a copy-pastable example if possible

```python
# In the code that follows, the first DataFrame (a) doesn't work as expected, the second (b) does.
a = pd.DataFrame({'x':[1.0,2,3,4,5], 'y':[2.0,3,4,5,6], 'z':['a', 'b', 'c', 'd', 'e']})
b  = pd.DataFrame({'x':[1.0,2,3,4,5], 'y':[2.0,3,4,5,6]})

# 1
a.loc[2, ['x', 'y']].x.dtype    # gives 'object', which is unexpected
# 2
a.loc[2][['x', 'y']].dtype       # gives 'object', but this is arguably expected
# 3
a[['x', 'y']].loc[2].dtype       # gives 'float', which is expected

```
#### Problem description

In the above version, I believe the output of `a.loc[2, ['x', 'y']]` is unexpected, since it will be a series with dtype `object` and not `float64.` `a.x` and `a.y` are both `float64` in the above example.

I can understand why line `# 2` gives a series with dtype `object`, since we first convert to a series by taking the `loc`, and in that series one of the elements will be `object` (i.e `a.z.dtype` is `object`). However if possible, I think it would make more sense if `a.loc[2, ['x', 'y']]` tries to cast it to the common data type, which in this case is `float64`.

The issue doesn't happen when we substitute `b` for `a` above, since all the elements in `b` are `float64`, and any row is also `float64`.

I'm not familiar with the pandas internals, but I would guess that what's happening in `# 1` is that it first produces a `pd.Series` from row 2, which is cast to `object` due to column `z`, and then subselecting elements of that keeps same data type.

#### Expected Output

`# 1` and `# 3` should intuitively be the same,  but I may be wrong in this.

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

<details>

[paste the output of ``pd.show_versions()`` here below this line]
INSTALLED VERSIONS
------------------
commit: None
python: 3.5.4.final.0
python-bits: 64
OS: Linux
OS-release: 4.8.14-040814-generic
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8

pandas: 0.21.1
pytest: 3.2.1
pip: 10.0.1
setuptools: 36.4.0
Cython: 0.26
numpy: 1.14.3
scipy: 1.0.0
pyarrow: None
xarray: None
IPython: 5.1.0
sphinx: 1.6.3
patsy: 0.4.1
dateutil: 2.6.1
pytz: 2017.2
blosc: None
bottleneck: 1.2.1
tables: 3.3.0
numexpr: 2.6.4
feather: None
matplotlib: 2.1.2
openpyxl: 2.4.8
xlrd: 1.1.0
xlwt: 1.3.0
xlsxwriter: 0.9.8
lxml: 3.8.0
bs4: 4.6.0
html5lib: 0.9999999
sqlalchemy: 1.1.13
pymysql: None
psycopg2: None
jinja2: 2.9.6
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None

</details>
