gcd and lcm should really get proper smallint impls.

they are used very heavily every time we have Rat objects.