ENH: allow subclass overrides by removing explicit ndarray methods

This is a follow-on of #4586, and it removes all direct use of `ndarray` methods, changing, e.g., 
`ndarray.__iadd__(self._data, ...)` to `self._data.__iadd__(...)`. The idea again is to not presume what data is being held (though it is not as essential to making masked `Quantity` work as is #4586).