This diff required fixing getEmbeddedAddend to apply sign
extension to 32-bit values. We were previously passing around wrong
64-bit addend values that became "right" after being truncated back to
32-bit.
I've also made getEmbeddedAddend return a signed int, which is similar
to what LLD-ELF does for its getImplicitAddend.
reportRangeError, checkUInt, and checkInt are counterparts of similar
functions in LLD-ELF.
(Should the check be in encodeBranch26() instead (etc)? The we won't miss it for other calls, and the 26/28 discrepancy is maybe a bit less magical when the check is closer to the shift.