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.
Would this Just work! if `Float16` was included here?

It seems to me that the only requirement to a `BitsFloat` is that it can be losslessly be converted to a `Float64`/`Cdouble`