A masked array will fail the `isinstance()` test and won't get to this line.

I originally wrote basically what you suggested, but it turns out that `Column` ignores the `length` kwarg if you pass in data, so it was creating a wrong length column if you passed a scalar.  Instead of modifying the `Column.__new__` and `MaskedColumn.__new__`, I decided to just ask numpy for the dtype of non-ndarray inputs in advance and then make an initially-empty Column.

BTW, version 2 was something like (with no `if not isinstance(..)`)
```
value = np.array(value, subok=True, copy=False)
```
That would have also preserved masked arrays and not copied values, but I thought it was better to not touch `value` at all if already an `ndarray`.