This class allows lossless conversion
from any representation of a rational to the fixed
"Lossless" means - don't do any rounding.
For rounding see Algebra.RealRing.
With the instances for
we acknowledge that these types actually represent rationals
rather than (approximated) real numbers.
However, this contradicts to the
Laws that must be satisfied by instances:
fromRational' . toRational === id
Lossless conversion from any representation of a rational to