this is already going to be a *lot* of work, it would be good to
tackle this as a team (everyone pick a file, perhaps coordinate
on freenode #libreriscv)
the constructor (__init__) does not need calling, it is a metaclass,
it just needs to be added:
wherever there is a def elaborate(....)
turns out that this has knock-on ramifications for the pipeline API.
anything that's used in the incoming or outgoing data, that happens
to be a module, *has* to be added as a submodule to its parent,
otherwise warnings are thrown.
split out FPNumBase into FPNumBaseRecord which is not derived
from Elaboratable, then passed that in as an argument to
FPNumBase, FPNumIn/Out and others that needed some module
Overflow - just made it no longer a module.