Fixed Math, Added Opposite, aligned constructors.

Added getOpposite and isOpposite methods, As well as reviewing and fixing the math for the secondary ordinal directions, but I'm still not convinced they should even be in the API.
Yes, that's why it's always difficult to setup references to enums of the same type.