binutils: clean up GAS port a bit
binutils: improve GAS's constant-generation code
binutils: remove some pc-relative relocs

Previously, we had multiple low-part PC-relative relocs, e.g.
R_RISCV_GOT_LO12 and R_RISCV_TLS_GD_LO12.  But since these are indirect
relocs and enough info is encoded in the high part, they are redundant.
Now, we only have two: R_RISCV_PCREL_LO12_I and R_RISCV_PCREL_LO12_S.
For example, the following PIC code adds TLS variables x and y:

.L1: auipc a0, %tls_ie_pcrel_hi(x)
.L2: auipc a1, %tls_ie_pcrel_hi(y)
     ld a0, %pcrel_lo(.L1)(a0)
     ld a1, %pcrel_lo(.L2)(a1)
     ld a0, 0(a0)
     ld a1, 0(a1)
     add a0, a0, a1
binutils: clean up disassembler