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?)

No, that is what I tried first -- though in hindsight it should not work: by subclassing from `ndarray` we already inherit `ndarray.__setitem__`, so it does not help to explicitly call it. What is important is to call it using an `ndarray`, so that one immediately gets put in the fast track.