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.
With this don't we lose efficient addition of BigInt and Signed integers, since GMP only has `add_ui`?