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.
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.