Refactor Quantity into Numpy ndarray sub-class

This is an alternative to #899 and tries to fix the issue described there.

Basically, this re-factors the ``Quantity`` class so that it can be a sub-class of Numpy ndarray. This works nicely when using the class as standalone, but it is breaking havoc when I put it in Astropy, because of the code in astropy.constants.

@iguananaut - I can't figure out how to adjust the ``Constant`` and ``ConstantMeta`` classes to work properly now, do you have any ideas? If you can think of a fix, please feel free to open a PR against my branch.

cc @taldcroft @mdboom @eteq