Improve x64 intrinsic perf with the magic multiply.
Improve x64 intrinsic perf with the magic multiply.

This ports the magic multiply technique in 7209c36 from uint128 to
x64 intrinsics. Interestingly, this is slightly faster for Clang/LLVM
(at least on Windows), presumably due to weak uint128 optimizations.

Note that when uint128 and x64 intrinsics are unavailable (e.g. x86),
the magic multiply is slower than the technique of calling `mod1e9()`
repeatedly, which is why that codepath is being retained here.

`umul256_hi128_lo64()` uses `uint64_t` for all math. Therefore, it
can't take advantage of the fact that double-width products can absorb
two single digits. So, it has explicit carry checks, and names its
variables `temp` instead of `mid`.

ulfjack/ryu,ulfjack/ryu,ulfjack/ryu,ulfjack/ryu