Units ufunc and inplace ok

@astrofrog - here is a more complete version using inplace calculations, with a few more comments on the main thread. For here, just a note that most of `__array_prepare__` is independent of the inplace stuff, and indeed will be needed anyway (as it no longer assumes `self` is one of the inputs, which can be disastrously wrong...)