ArithmeticException in Rational div/reciprocal.

Rational was throwing IllegalArgumentExceptions for divide by zeros and
calling reciprocal on 0/1. It should throw ArithmeticException.
Constructing a Rational explicity with a 0 denominator still throws an
IllegalArgumentException.
fix Signed[BigInt]
BigInt has a MetricSpace
tests for MetricSpace
Merge remote-tracking branch 'larsrh/topic/metricspace' into 2.10.0
fix expected exception type in RationalTest