Improve performance of table column setting

Setting an astropy table column is around 70 times slower than setting a comparable np array.  For some reason doing something like `c[:] = 2` gets into `__array_finalize__` and it ends up essentially making a copy of the original, including calls to deepcopy for meta.
```
In [1]: from astropy.table import Column
In [2]: c = Column([1,2])
In [3]: %timeit c[:] = 2
10000 loops, best of 3: 68.2 µs per loop
In [4]: a = np.array([1,2])
In [5]: %timeit a[:] = 2
1000000 loops, best of 3: 917 ns per loop
```
What can we do about this?  Is there something in `Column` that is subclassing ndarray incorrectly?

@embray @mhvk @mdboom @astrofrog (any other ndarray experts?)

Also just curious if `super(BaseColumn, self).__setitem__(index, value)` would work to avoid going through the `data` property.