Rename masked column fails for subsequent slicing

This is weird, but when you create a masked column and look at the data attribute, you will see things like `mc.data._name`, `mc.data._parent_table`, etc.   For reasons I don't understand, this leads to the following bug:
```
In [1]: from astropy.table import *
In [2]: mc = MaskedColumn([1,2], name='a')
In [3]: mc.data._name
Out[3]: 'a'

In [4]: mc
Out[4]: 
<MaskedColumn name='a' unit=None format=None description=None>
masked_array(data = [1 2],
             mask = [False False],
       fill_value = 999999)

In [5]: mc.name = 'b'

In [6]: mc
Out[6]: 
<MaskedColumn name='b' unit=None format=None description=None>
masked_array(data = [1 2],
             mask = [False False],
       fill_value = 999999)

In [7]: mc[:]   # back to name of 'a'
Out[7]: 
<MaskedColumn name='a' unit=None format=None description=None>
masked_array(data = [1 2],
             mask = [False False],
       fill_value = 999999)

In [8]: mc.data._name
Out[8]: 'a'
```
Note this is in the current stable release, and the same feature is not seen for Column.  This is for Mac / Python 2.7 / numpy 1.8.
About using `__array_finalize__` directly, I didn't do this originally because it seemed like the `out` object was mostly "finalized" already, and that there probably was good a reason the `MaskedArray` implementation was *not* calling it.  So I started from a bit of fearful ignorance.  

Now looking at what ends up getting run via `__array_finalize__` there is a bunch of stuff that I'm not sure needs to be done or should be done again on `out`.  But still not having complete understanding, I did just try it out and it failed a couple of tests in `test_table_aggregate` (which is honestly a bit odd).