bignum: added standard compliant overflow checks
bignum: use combined overflow check and operation
Add detection of unsigned 128-bit integer.

Define UINT128 as distinct type since "unsigned __int128_t" does not always work even when __int128_t does. Adds UINT64 as well for macro expansion in bignum.h.
optimizer: check for overflow more correctly
testsuite: test optimizer overflow checks