mpz: implement `Hash`

For this, we need to make assumptions about the size of a GMP limb.
Currently the size is assumed to be that of a `uint`. This assumption is
verified by a test.

However, GMP provides `__gmp_bits_per_limb` that could be used to
reliably determine the correct type at compile time.  Alternatively the
corresponding type could be imported via FFI (if Rust supported it).