metrics to not be loaded after a resolution change, because
the reload is optimized out by SwitchThemeAndLanguage.
(We may have loaded ThemeMetrics on demand in the
past.)
The reload needs to always happen, even though the theme
hasn't changed, since the theme load is affected by the
resolution; eg. upvalues in Lua scripts may have been
computed based on SCREEN_WIDTH.
serializing data and tables while reinstantiating Lua. That's
ugly, and can't serialize some things (eg. functions).
Instead, when changing themes, shut down the high-level objects
and unregister as much as we can from Lua, change the theme,
then reregister things. This doesn't clean the slate as much;
globals won't be erased, etc.
A better way would be to clear everything that uses Lua
(delete singletons), then reload it all. Singleton creation is
a bit of a mess currently so that would break a lot, and we
don't want to reload songs.