Performance of adding columns to DataFrame
I found a performance issue involving modifying `DataFrame` objects.  Adding columns where a value is present for every value of the index (e.g., `len(column) == len(index)`) is really, really slow.

``` python
import numpy as np
import pandas
import time

values = np.random.randn(100)

t0 = time.time()
columns = [values for i in range(10000)]
df = pandas.DataFrame(np.column_stack(columns),
                      columns=range(len(columns)),
                      index=values)
print 'A took %.3f seconds' % (time.time() - t0)

t0 = time.time()
df = pandas.DataFrame(index=values)
for i in range(10000):
    df[i] = values
print 'B took %.3f seconds' % (time.time() - t0)
```

Running it on my laptop shows that the first version (doing all the work in `__init__`) is much faster:

```
A took 0.070 seconds
B took 10.717 seconds
```

The `cProfile` results show hotspots involving the index:

```
   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
    13410    2.716    0.000    2.716    0.000 {method 'astype' of 'numpy.ndarray' objects}
    12246    2.024    0.000    2.024    0.000 {numpy.core.multiarray.concatenate}
    22274    1.443    0.000    1.501    0.000 index.py:277(__contains__)
    10555    1.103    0.000    1.103    0.000 {method 'copy' of 'numpy.ndarray' objects}
      555    0.639    0.001    3.711    0.007 internals.py:823(_consolidate_inplace)
      555    0.429    0.001    3.072    0.006 internals.py:1370(_consolidate)
    11135    0.299    0.000    8.921    0.001 internals.py:892(insert)
    11141    0.217    0.000    0.217    0.000 {pandas.lib.is_integer_array}
   121164    0.163    0.000    0.163    0.000 {numpy.core.multiarray.array}
    25105    0.140    0.000    3.493    0.000 index.py:75(__new__)
   342808    0.107    0.000    0.107    0.000 {isinstance}
     1691    0.106    0.000    0.115    0.000 index.py:211(is_unique)
    11138    0.096    0.000    0.096    0.000 {pandas.lib.list_to_object_array}
```
