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 insn: use records to define instruction encodings.
addsub.py In-depth refactoring, improved user interface.
all.py Add checks for multiplication/division instructions.
bcd.py Add checks for BCD Assist instructions.
branch.py In-depth refactoring, improved user interface.
byterev.py Add checks for Byte-Reverse instructions.
compare.py Add checks for CMPRB and CMPEQB instructions.
cr.py Add a --exclude parameter to the check command.
loadstore.py Add checks for Load/Store instructions.
logical.py Add checks for logical instructions.
msr.py Add checks for MTMSR/MFMSR instructions.
muldiv.py Add checks for multiplication/division instructions.
rotate.py Add checks for Rotate/Shift instructions.
spr.py In-depth refactoring, improved user interface.
syscall.py Add check for System Call instruction.
trap.py Add checks for Trap instructions.