I think it would be better not to initialize a `Column` from within `BaseColumn`. Easiest would be to move it back to `Column`, but with this new approach it may be possible to get rid of `MaskedColumn.copy()` as well. E.g., it may be that with the following it would work for both: 
```
...
    data = self.view(super(BaseColumn, self).__class__)
...
out = self.__class__(name=...)
```
(I think the `super` will correctly go to `ndarray` for `Column` and `MaskedArray` for `MaskedColumn`.)