Tweak CSR constraints for more even read/write distribution
Tweak CSR constraints for more even read/write distribution

Where contraints allow a CSR to be both read and written read-only vs
read-write (and write-only) operation was effectively chosen by which
register or immediate was randomly chosen. This made read-only accesses
to such CSRs rare.

Now we explicitly choose to do a read or a read-write with an explicit
random bit that is solved before the register or immediate.

Even with this change the distruibution skews to read-write operation as
the CSRRW and CSRRWI instructions cannot be read-only and that is chosen
independently of the explicit read-only/read-write decision introduced
by this commit. Fixing this so we get a 50/50 distribution of
read-only/read-write is significantly more complex but isn't required as
the read-only case is now sufficiently common.

This also allows the removal of the macro used to define the expression
for a writeable CSR giving neater code.

google/riscv-dv,google/riscv-dv,google/riscv-dv