non-promoting comparisons for BigInt and BigFloat

This uses the gmp and mpfr library functions for comparing `BigInt`s and `BigFloat`s with machine integers and floats whenever possible, avoiding unnecessary creation of big types via promotion.
Ah sorry, silly of me to miss that.