Jean-François Nguyen 331e4b76ba insn: use records to define instruction encodings.
Before this commit, instructions were defined by a sequence of Const
for fixed fields (e.g. PO/XO) and AnyConst for others (e.g. operands).
This approach restricted their use to BMC use-cases, and prevented them
from appearing in VCD traces.

After this commit, an instruction encoding is defined by a Record. As
fields can now be set to arbitrary values, the corresponding InsnSpec
will only assert `pfv.stb` if `pfv.insn` matches a valid encoding (i.e.
fixed fields have correct values). On the other side, BMC testbenches
will drive `pfv.insn` with an AnyConst, and assume `pfv.stb` is high.
..
__init__.py check.insn: use DUT parameters to configure the spec pfv.Interface.
addsub.py insn: use records to define instruction encodings.
bcd.py insn: use records to define instruction encodings.
branch.py insn: use records to define instruction encodings.
byterev.py insn: use records to define instruction encodings.
compare.py insn: use records to define instruction encodings.
cr.py insn: use records to define instruction encodings.
loadstore.py insn: use records to define instruction encodings.
logical.py insn: use records to define instruction encodings.
msr.py insn: use records to define instruction encodings.
muldiv.py insn: use records to define instruction encodings.
rotate.py insn: use records to define instruction encodings.
spr.py insn: use records to define instruction encodings.
syscall.py insn: use records to define instruction encodings.
trap.py insn: use records to define instruction encodings.
utils.py insn.spec: implement some interrupts (program,alignment,system call).