Let Angle subclasses decide on class of calculation results; correct Latitude __setitem__

I noticed `Angle.__array_wrap__` initialises of a new `Angle` object when a view would do. But correcting it, I realised this really is in the wrong place: we want `Longitude` and `Latitude` to fall back to `Angle` when any calculation is done, but this may be unwanted behaviour for possible future `Angle` subclasses. Hence, this PR moves the `__array_wrap__` to those subclasses.

I also noticed that in `Latitude` items get set *before* they are being checked, which means that `lat[:]=100*u.deg` will raise an error message after messing up the contents. Validation is now done first.

(̶F̶o̶r̶ ̶m̶y̶ ̶o̶w̶n̶ ̶s̶a̶n̶i̶t̶y̶,̶ ̶t̶h̶i̶s̶ ̶i̶s̶ ̶b̶a̶s̶e̶d̶ ̶o̶n̶ ̶#̶1̶8̶4̶8̶,̶ ̶s̶o̶ ̶t̶h̶a̶t̶ ̶o̶n̶e̶ ̶s̶h̶o̶u̶l̶d̶ ̶b̶e̶ ̶m̶e̶r̶g̶e̶d̶ ̶f̶i̶r̶s̶t̶.̶)̶
EDIT: that was a mistake. hopeless to keep track. now split it off.