Touch up MetricSpace and implement laws.

This switches real metric space to be basically the absolute value of the difference of 2 real numbers, but return as that numbers type, not `Double`. It also implements laws for MetricSpace and checks that the edit distance is a metric space.