gcc: use SLLI to implement tests like (x & 0xFFF)
binutils: clean up relaxation code a bit
binutils: merge elf{32/64}-riscv into elfnn-riscv

The latter is preprocessed to replace the string NN with 32 or 64 as needed.
binutils: favor elfnn-riscv.c over elfxx-riscv.c

Since a lot of code is dependent on the word size, it's both simpler and
more efficient to put that code in elfnn-riscv.c.  Only code that does not
depend on the word size remains in elfxx-riscv.c.
binutils: speed up linker relaxation process
binutils: fix (?) relaxation symbol adjustment

I think there were a few off-by-one errors.  If so, they exist in other
backends, too, since relax_delete_bytes was cribbed from SH.
binutils: support code alignment in the linker

We over-emit NOPs in the assembler, then delete them in the linker to achieve
the required alignment.  This allows alignment to work in spite of other
linker relaxations.