First attempt at refactoring Quantity into Numpy ndarray sub-class
Gets the tests at least passing with Quantity as an ndarray subclass.  This
required two changes in the existing behavior of the class (both of which could
be worked around, but for now these changes were the easiest way to get things
working):

1. Quantity.value always returns a Python type (such as `int` or `float`) for
   scalar quantities, even if the underlying object is a Numpy scalar array.

2. Quantity instances have a default unit of unscaled_dimensionless (previously
   it was erroneous to instantiate a Quantity without specifying a unit).
Fix behavior of ufuncs, added tests
Added tests for simple operations
Added tests for ufuncs
Fixed majority of failing ufunc tests
Added more tests for ufuncs, ensure all tests pass
Fix for ufuncs starting with is* - these should just return a plain Numpy array
Fixed behavior for addition/subtraction and implicit float conversion. Now only dimensionless and unscaled quantities can be automatically converted to float or int.
Fixed failing tests
Added more tests (but mark as xfail until we implement/fix this functionality)
Added in ``__array_priority__``, which was previously missing.
Minor fix to docstring
Avoid converting the whole array to radians when determining if it is convertible, as pointed out by @mhvk
Added tests for ufuncs that should return objects with the same units
Treat dimensionless units the same way as angles
Ensure that cases like 1 + v / c return a dimensionless and unscaled quantity
Addition of all sensible ufuncs
Addition of further ufuncs and cleanup; also defined sum, prod, diff, ediff1d
Simplified a little, added tests that all of numpy ufunc's are covered