ODD: many many isinstance calls per df cell, when invoking repr()
``` python
In [83]: pd.options.display.max_rows=1
    ...: pd.options.display.max_columns=1
    ...: df=DataFrame(np.random.randn(1000,1000))
    ...: %prun -l 5 df._repr_html_()

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
      209    0.000    0.000    0.000    0.000 {isinstance}

In [84]: pd.options.display.max_rows=2
    ...: pd.options.display.max_columns=1
    ...: df=DataFrame(np.random.randn(1000,1000))
    ...: %prun -l 5 df._repr_html_()

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)

      246    0.000    0.000    0.000    0.000 {isinstance}

In [85]: pd.options.display.max_rows=1
    ...: pd.options.display.max_columns=2
    ...: df=DataFrame(np.random.randn(1000,1000))
    ...: %prun -l 5 df._repr_html_()

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
      307    0.000    0.000    0.000    0.000 {isinstance}

In [86]: pd.options.display.max_rows=2
    ...: pd.options.display.max_columns=2
    ...: df=DataFrame(np.random.randn(1000,1000))
    ...: %prun -l 5 df._repr_html_()
    ncalls  tottime  percall  cumtime  percall filename:lineno(function)
      355    0.000    0.000    0.000    0.000 {isinstance}
```

I find it strange that outputting a single additional cell in a new column
requires an extra 100 calls to isinstance, or extra 50 if in a new row.
the defaults f
Not necesserily a bug, just puzzling.  if this applies more generally,
such as in to_html, the perf could be a problem. as it stand repr
is plenty fast for interactive use, so not a problem.
