Quantity.__getattr__ should not cast to numpy array when not necessary

Casting only occurs if the requested attribute is a handled numpy
attribute.
Rewrote add_sub similarly to iadd_sub to handle not in place operations.