BUG: column formatting with non-standard objects
#### Code Sample, a copy-pastable example if possible

```
frame = pd.DataFrame({('test', 'it'): [42], ('yet', 'again'): [43], ('and', 'more'): [44]})
frame.groupby([('and', 'more'), ('test', 'it')]).mean().unstack()
```

results in:

```
TypeError                                 Traceback (most recent call last)
/homes/jwienke/.local/lib/python3.4/site-packages/IPython/core/formatters.py in __call__(self, obj)
    670                 type_pprinters=self.type_printers,
    671                 deferred_pprinters=self.deferred_printers)
--> 672             printer.pretty(obj)
    673             printer.flush()
    674             return stream.getvalue()

/homes/jwienke/.local/lib/python3.4/site-packages/IPython/lib/pretty.py in pretty(self, obj)
    381                             if callable(meth):
    382                                 return meth(obj, self, cycle)
--> 383             return _default_pprint(obj, self, cycle)
    384         finally:
    385             self.end_group()

/homes/jwienke/.local/lib/python3.4/site-packages/IPython/lib/pretty.py in _default_pprint(obj, p, cycle)
    501     if _safe_getattr(klass, '__repr__', None) not in _baseclass_reprs:
    502         # A user-provided repr. Find newlines and replace them with p.break_()
--> 503         _repr_pprint(obj, p, cycle)
    504         return
    505     p.begin_group(1, '<')

/homes/jwienke/.local/lib/python3.4/site-packages/IPython/lib/pretty.py in _repr_pprint(obj, p, cycle)
    699     """A pprint that just redirects to the normal repr function."""
    700     # Find newlines and replace them with p.break_()
--> 701     output = repr(obj)
    702     for idx,output_line in enumerate(output.splitlines()):
    703         if idx:

/usr/lib/python3/dist-packages/pandas/core/base.py in __repr__(self)
     53         Yields Bytestring in Py2, Unicode String in py3.
     54         """
---> 55         return str(self)
     56 
     57 

/usr/lib/python3/dist-packages/pandas/core/base.py in __str__(self)
     32 
     33         if compat.PY3:
---> 34             return self.__unicode__()
     35         return self.__bytes__()
     36 

/usr/lib/python3/dist-packages/pandas/core/frame.py in __unicode__(self)
    458             width = None
    459         self.to_string(buf=buf, max_rows=max_rows, max_cols=max_cols,
--> 460                        line_width=width, show_dimensions=show_dimensions)
    461 
    462         return buf.getvalue()

/usr/lib/python3/dist-packages/pandas/core/frame.py in to_string(self, buf, columns, col_space, colSpace, header, index, na_rep, formatters, float_format, sparsify, nanRep, index_names, justify, force_unicode, line_width, max_rows, max_cols, show_dimensions)
   1297                                            max_cols=max_cols,
   1298                                            show_dimensions=show_dimensions)
-> 1299         formatter.to_string()
   1300 
   1301         if buf is None:

/usr/lib/python3/dist-packages/pandas/core/format.py in to_string(self, force_unicode)
    378             text = info_line
    379         else:
--> 380             strcols = self._to_str_columns()
    381             if self.line_width is None:
    382                 text = adjoin(1, *strcols)

/usr/lib/python3/dist-packages/pandas/core/format.py in _to_str_columns(self)
    310 
    311         # may include levels names also
--> 312         str_index = self._get_formatted_index()
    313         str_columns = self._get_formatted_column_labels()
    314 

/usr/lib/python3/dist-packages/pandas/core/format.py in _get_formatted_index(self)
    589         # empty space for columns
    590         if show_col_names:
--> 591             col_header = ['%s' % x for x in self._get_column_name_list()]
    592         else:
    593             col_header = [''] * columns.nlevels

/usr/lib/python3/dist-packages/pandas/core/format.py in <listcomp>(.0)
    589         # empty space for columns
    590         if show_col_names:
--> 591             col_header = ['%s' % x for x in self._get_column_name_list()]
    592         else:
    593             col_header = [''] * columns.nlevels

TypeError: not all arguments converted during string formatting
```
#### Expected Output

No exception, just and unstacked data frame where names are somehow generated.
#### output of `pd.show_versions()`

```
INSTALLED VERSIONS
------------------
commit: None
python: 3.4.3.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.13.1
Cython: None
numpy: 1.8.2
scipy: 0.13.3
statsmodels: None
IPython: 5.1.0
sphinx: None
patsy: None
scikits.timeseries: None
dateutil: 2.0
pytz: 2012c
bottleneck: None
tables: None
numexpr: None
matplotlib: 1.3.1
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
sqlalchemy: None
lxml: None
bs4: None
html5lib: 0.999
bq: None
apiclient: None
```
