Fix repr of DataFrame with IntervalIndex
@TomAugspurger after the repr PR, the docs build catched an error: the repr of a DataFrame with an IntervalIndex started failing:

```
In [1]: df = pd.DataFrame({'A': [1, 2, 3, 4]}, 
   ...:                   index=pd.IntervalIndex.from_breaks([0, 1, 2, 3, 4]))                                                                                                  

In [2]: df                                                                                                                                                                      
Out[2]: ---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
~/miniconda3/envs/dev/lib/python3.5/site-packages/IPython/core/formatters.py in __call__(self, obj)
    700                 type_pprinters=self.type_printers,
    701                 deferred_pprinters=self.deferred_printers)
--> 702             printer.pretty(obj)
    703             printer.flush()
    704             return stream.getvalue()

~/miniconda3/envs/dev/lib/python3.5/site-packages/IPython/lib/pretty.py in pretty(self, obj)
    400                         if cls is not object \
    401                                 and callable(cls.__dict__.get('__repr__')):
--> 402                             return _repr_pprint(obj, self, cycle)
    403 
    404             return _default_pprint(obj, self, cycle)

~/miniconda3/envs/dev/lib/python3.5/site-packages/IPython/lib/pretty.py in _repr_pprint(obj, p, cycle)
    695     """A pprint that just redirects to the normal repr function."""
    696     # Find newlines and replace them with p.break_()
--> 697     output = repr(obj)
    698     for idx,output_line in enumerate(output.splitlines()):
    699         if idx:

~/scipy/pandas/pandas/core/base.py in __repr__(self)
     75         Yields Bytestring in Py2, Unicode String in py3.
     76         """
---> 77         return str(self)
     78 
     79 

~/scipy/pandas/pandas/core/base.py in __str__(self)
     54 
     55         if compat.PY3:
---> 56             return self.__unicode__()
     57         return self.__bytes__()
     58 

~/scipy/pandas/pandas/core/frame.py in __unicode__(self)
    626             width = None
    627         self.to_string(buf=buf, max_rows=max_rows, max_cols=max_cols,
--> 628                        line_width=width, show_dimensions=show_dimensions)
    629 
    630         return buf.getvalue()

~/scipy/pandas/pandas/core/frame.py in to_string(self, buf, columns, col_space, header, index, na_rep, formatters, float_format, sparsify, index_names, justify, max_rows, max_cols, show_dimensions, decimal, line_width)
    707                                            decimal=decimal,
    708                                            line_width=line_width)
--> 709         formatter.to_string()
    710 
    711         if buf is None:

~/scipy/pandas/pandas/io/formats/format.py in to_string(self)
    601         else:
    602 
--> 603             strcols = self._to_str_columns()
    604             if self.line_width is None:  # no need to wrap around just print
    605                 # the whole frame

~/scipy/pandas/pandas/io/formats/format.py in _to_str_columns(self)
    510         # may include levels names also
    511 
--> 512         str_index = self._get_formatted_index(frame)
    513 
    514         if not is_list_like(self.header) and not self.header:

~/scipy/pandas/pandas/io/formats/format.py in _get_formatted_index(self, frame)
    807                                      names=show_index_names, formatter=fmt)
    808         else:
--> 809             fmt_index = [index.format(name=show_index_names, formatter=fmt)]
    810         fmt_index = [tuple(_make_fixed_width(list(x), justify='left',
    811                                              minimum=(self.col_space or 0),

~/scipy/pandas/pandas/core/indexes/base.py in format(self, name, formatter, **kwargs)
    993             return header + list(self.map(formatter))
    994 
--> 995         return self._format_with_header(header, **kwargs)
    996 
    997     def _format_with_header(self, header, na_rep='NaN', **kwargs):

~/scipy/pandas/pandas/core/indexes/interval.py in _format_with_header(self, header, **kwargs)
   1012 
   1013     def _format_with_header(self, header, **kwargs):
-> 1014         return header + list(self._format_native_types(**kwargs))
   1015 
   1016     def _format_native_types(self, na_rep='', quoting=None, **kwargs):

~/scipy/pandas/pandas/core/indexes/interval.py in _format_native_types(self, na_rep, quoting, **kwargs)
   1016     def _format_native_types(self, na_rep='', quoting=None, **kwargs):
   1017         """ actually format my specific types """
-> 1018         from pandas.io.formats.format import IntervalArrayFormatter
   1019         return IntervalArrayFormatter(values=self,
   1020                                       na_rep=na_rep,

ImportError: cannot import name 'IntervalArrayFormatter'
```

What is in this PR "fixes" the immediate error, but, I see a difference with what was before:

On 0.23.4:
```
In [2]: i = pd.io.formats.format.IntervalArrayFormatter(pd.interval_range(1, 5))

In [3]: i.get_result()
Out[3]: ['(1, 2]', '(2, 3]', '(3, 4]', '(4, 5]']
```

On master:
```
In [22]: i = pd.io.formats.format.ExtensionArrayFormatter(pd.interval_range(1, 5))                                                                                              

In [23]: i.get_result()                                                                                                                                                         
Out[23]: [' (1, 2]', ' (2, 3]', ' (3, 4]', ' (4, 5]']
```

So there is now an extra space. So which means also the DataFrame repr starts with a space.

(still need to add tests, and it might this also breaks existing tests due to the whitespace change)
