The main problem here was calling the initialiser, which does not belong in `__array_wrap__` (but rather should be the domain of `__quantity_view__` and `__quantity_instance__`.

But the behaviour also seemed odd: instead of raising an exception, why not fall back to `Quantity` for calculations that do not give a length (e.g., suppose I want a velocity, why stop me from doing `point / (1.*u.yr)`?). This is what we do for `Angle` and its various subclasses as well, and seems least restrictive, so I tried to mimic that behaviour here (with the actual decision on what class to instantiate happening in `__array_wrap__`, like for `Angle`, etc.)