registers that have the same structure can now use shared value
definitions. the abstraction is kept active through the header
generation; that is, no cartesian product code is generated.
the header file genertion mechanism here is designed to:
* use human readable source data that is better structured and less
repetitive than the header files themselves
* produce same quality header files than the manual process of writing
them. some features were not yet enabled to show that the existing
headers didn't change. (look at emu.h's differences. whitespace
switched from tabs to spaces as they are easier to handle, use
--color-words to see the few differences that stemmed from
inconsistencies in the original file.)
* be less tedious and thus error prone when doing large modifications
(eg, i forgot to add _MASK to bitfields, would like to enable
bitbanding acces, and to overhaul the naming in doxygen modules)