Add `isValidNatural` predicate (#9818)

This predicate function encodes the internal `Natural` invariants, and
is useful for testsuites or code that directly constructs `Natural`
values.

C.f. `integer-gmp2`'s `isValidBigNat#` and `isValidInteger#` predicates
for testing internal invariants.
Fix `fromInteger` constructing invalid `Natural`

This fixes a case where `isValidNatural . fromInteger` would be `False`.

Re #9818
Implement {gcd,lcm}/Natural optimisation (#9818)

This provides the equivalent of the existing `{gcd,lcm}/Integer`
optimisations for the `Natural` type, when using the `integer-gmp2`
backend.
Call `popCountBigNat` directly (#9818)

This calls the `popCountBigNat` primitive directly instead of going
through `Integer`'s `popCount`.