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.