Better use of __array_finalize__ and __array__ in quantity/longitude/CartesianPoints

While working on #1839, I realised `Longitude._wrap_angle` was not always updated whenever `_unit` was, and I tracked this down to a missing `__array_finalize__`; with that in place, `__getitem__` and `__getslice__` where no longer needed, so it simplified matters.  Also changed how numpy scalars are handled: view them as an array using `__array__()` and then turn the view back into a `Quantity`.

EDIT -- updated title to reflect that I also changed `CartesianPoints` (see below)