To do this, MENU and SUBMENU are split into two types (at last), and
a Widget type is introduced. This should allow lots of code to be
removed at some point.
It's a complete mess for now - many things are out of place or shown
when they shouldn't be - and we can't move around the game map. But,
it's a good start.
Nothing is actually processed in this way yet, but there is a new
assertion forbidding certain types of records from having children.
Because of this new assertion, our menutype tweaks must be moved up a
layer into internal/menus. They fit better there anyway.