Assignment of multiple columns (hierarchical index) changes dtypes
#### Code Sample, a copy-pastable example if possible

[data.zip](https://github.com/pydata/pandas/files/311709/data.zip)

With the attached data (0.18.1 msgpack format), read the contained data frame and inspect the dtypes:

```
df = pd.read_msgpack('path/to/test.msg')
print df.dtypes
phases      end              datetime64[ns]
            name                     object
            start            datetime64[ns]
parameters  scanFrequency           float64
            tideFile                 object
dtype: object
```

After assigning a column group to itself, the dtypes of this column changes:

```
df['parameters'] = df['parameters']
print df.dtypes
phases      end              datetime64[ns]
            name                     object
            start            datetime64[ns]
parameters  scanFrequency            object
            tideFile                 object
dtype: object
```
#### Expected Output

I would expect that dtypes are preserved. Otherwise I have a hard time of manually recreating them.
#### output of `pd.show_versions()`

```
INSTALLED VERSIONS
------------------
commit: None
python: 2.7.11.final.0
python-bits: 64
OS: Linux
OS-release: 3.18.1-tf1-ll
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8

pandas: 0.18.1
nose: 1.3.7
pip: 7.1.2
setuptools: 18.7
Cython: None
numpy: 1.11.0
scipy: 0.17.1
statsmodels: 0.6.1
xarray: None
IPython: 4.2.0
sphinx: None
patsy: 0.4.1
dateutil: 2.5.2
pytz: 2016.3
blosc: None
bottleneck: None
tables: 3.2.2
numexpr: 2.5.2
matplotlib: 1.5.1
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
lxml: None
bs4: None
html5lib: None
httplib2: None
apiclient: None
sqlalchemy: None
pymysql: None
psycopg2: None
jinja2: None
boto: None
pandas_datareader: None
```
