flesh out the container system and add add some non-dummy callbacks to the mode buttons
This introduces a concept of “dirtiness” to the widgets, if a widget is nor marked as dirty, no longer recalculate its hash value on every render cycle.
The latter part of the commit message is a bit misleading, as it merely restructures the way the game mode is changed, not the fact that is changed.