Some efforts to make numeric conversions more transparent.

These conversions are mainly between BigInt <=> SafeLong (which should
not be risky) and from Natural => BigInt (which should also not be
risky). Unfortunately there's only so much we can do without a better
mechanism like multimethods.