[gsymutil] Verify output string table size and address info offsets do not exceed 32-bit max (#181458)
Previously, https://github.com/llvm/llvm-project/pull/165940 fixed
llvm-dwarfdump and llvm-gsymutil so that they can correctly **consume**
>4GB dSYM. However, if the dSYM is large enough, `llvm-gsymutil` can
still **produce** invalid gSYM.
This change add validation into gsymutil, so that it will fail when the
output string table or address info offsets will exceed 32-bit max.
Similar to https://github.com/llvm/llvm-project/pull/165940, it may be
difficult to auto-test this change. For manual testing, I cannot find a
large enough dSYM for which the gSYM would hit the limits (I have a 9GB
dSYM which produces a 1.7GB gSYM). I'm open to ideas if anyone has any.