fix: restore the `unsigned` overload family of `mpz`

This PR restores `mpz::operator=(unsigned)`, `cmp(mpz, unsigned)` with its comparison operators, and the `unsigned`/`uint64` overloads of `operator-=`, `operator*=` and `operator/=` that the dead-code removal had dropped.

Nothing calls them out of line, but the inline friends `mpz - uint64`, `mpz * unsigned`, `mpz / uint64` and friends still forward to them, and since every integer constructor of `mpz` is `explicit`, overload resolution silently fell back to the `int` versions: `mpz(0) - (uint64(1) << 40)` evaluated to `0` and `mpz(1 << 41) / uint64(1 << 40)` divided by zero. Only `operator=(char const *)` and `power`/`_power`/`pow`, which have no such forwarding callers, stay removed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2 files changed