Fix issue 12958 - core.checkedint.mulu is broken.

This implements the (uint, uint) case using ulong arithmetic
and the (ulong, ulong) case using trial division. See Bugzilla
for an ulong implementation by David Bregman that does not
require a division. As the functions are expected to be
implemented as compiler intrinsics to make use of
architecture-specific primitives anyway, the simpler version
has been chosen to reduce the potential for bugs, even though
it is slower.
Merge pull request #890 from klickverbot/fix-checkedint-umul

Fix issue 12958 - core.checkedint.mulu is broken.