Implemented comparison of Operators with Units::Numerics

The SquareRoot implementation may be wrong. It squares the target units before doing the conversion so that the proxy units after calling sqrt() will match the target units. I’m not sure what the desired behavior is.
Added inspect to the operator proxies

For more better debugging
Fixed mixed-unit operations with Rational
Conversion methods should accept a Units parameter
Added convert_to to UnitsMixin
Added support for spaceship of operator proxies

This is a bit of a hack. If two proxies are exactly the same, it converts everything to the units of the first operand of self and then does the comparison. I’m sure there’s a more optimal way to do this, but this works well enough for now.
Fixed spaceship operator when applied to unlike units
Operators are now Comparable
Added a units attribute to Operator

It randomly selects the units of the first operand
Better collapsing of like units in Addition and Subtraction
Operator#== is now order-insensitive

eql? is now the order-sensitive comparison operator. This is to allow for situations where something like (10.cm + 6.mm) needs to compare equal to (6.mm + 10.cm).
Added a conversion cache to Operator

The new #== operator is rather slow now that it needs to do conversions for each comparison. Using a cache seems to help, but not by much. Although it doesn’t appear to hurt either. I’m leaving this implemented in case it helps in situations involving lots of conversions.