This is again meant to catch the case of integer input arrays, where the standard `ufunc` may have generated an integer output array, but this may no longer be able to safely hold the results after scaling (e.g., `np.arange(3)*u.km + np.arange(3)*u.m`). For this case, we need to allocate a new array, and this is done by setting `obj_array = None` (which causes the function calls below to generate a new array for `out`, while otherwise it would just point to `obj_array`).

Like for my initial use of the output arrays as storage for the scaled inputs, one could argue this is premature optimisation. Given that @astrofrog removed my nifty storage implementation (which avoided any extra memory allocation over numpy for nearly all cases), perhaps it is best to also remove `obj_array`. For small arrays, which I guess it what people use quantities most for, the two extra memory allocations do not matter so much anyway.