Refactor|libcommon: Began updating the game menu with dynamic widget management

The goal of this branch is to update the game menu so that it can be
dynamically rebuilt on engine reset.
Refactor|libcommon: Converted all MNObject_*() functions to mn_object_t methods
Refactor|libcommon: Dynamically construct the 'HUD Options' menu
Refactor|libcommon: Continued updating game menu memory management
Merge branch 'master' into gamemenu-rebuild-on-reset
Refactor|libcommon: Game menu list widgets have ownership of list items

As of this commit, all game menus are constructed dynamically using
memory allocated from the heap rather than the Zone. All allocated
memory is freed when Hu_MenuShutdown() is called.

Todo: Cleanup.
Refactor|libcommon: Continued cleaning up game menu components
Refactor|libcommon: Moved game menu components to namespace common::menu
Refactor|libcommon: Renamed all game menu components

This will do for now. We'll most likely dump most of this code in
the not too distant future in any case.

Todo: Rebuild the game menu on engine reset.
libcommon: Rebuild the game menu on engine reset

The game menu is now rebuilt following an engine reset. If the menu
was previously open it will be re-opened on the active page.

Todo: Remember the previously focused widget on the active page.
libcommon|SaveSlots: Update save slot statuses following engine reset

Save slots are linked with corresponding menu widgets on the load/save
pages. Presently these menu widgets are updated by the save slot and
so we must update the save slot's status following an engine reset as
the game menus are now rebuilt at this time.
libcommon|Menu: Fully initialize the 'PlayerSetup' menu page on activation

Rather than perform part of the initialization using an activation
callback of the button on the 'Multiplayer' page, this should be done
using a page activation callback.
Merge branch 'master' into gamemenu-rebuild-on-reset
Fixed|libcommon|libdoom|libdoom64|libheretic|libhexen: Compiler warnings (missing initializer, unused arg)
Merge branch 'master' into gamemenu-rebuild-on-reset
Merge branch 'master' into gamemenu-rebuild-on-reset
libcommon|Menu: Close the game menu if open when performing a reset

On second thought, simply close the menu if its open at reset time.
It may be that the previously active page no longer exists, or, it
no longer has an equivalent focusable item following the rebuild.
libcommon|Menu: Ensure the 'LoadGame' and 'SaveGame' menus are kept in sync

Previously only one set of widget instances were used for both pages.
Now that each page uses its own widgets we must ensure that the two
are kept in sync.