Refactor|InFine: Reimplemented InFine script widget model in C++

All InFine script objects are now based on FinaleWidget.

Todo:
- Give FinalePageWidget ownership of the widgets.
- Cleanup
Refactor|InFine: Moved InFine system components to new source files
Cleanup|InFine: Removed unnecessary header dependencies
InFine: Cleanup
InFine: Removed the global FinalePageWidget LUT

Such pages are considered a subcomponent of the FinaleInterpreter
and as such there is no need for a global LUT.

Added InFineSystem::finaleInProgess() to conveniently determine if
one or more Finales is currently in progress (active or suspended).
Refactor|UI|GameUIWidget: Moved UI2_Drawer() into GameUIWidget
InFine: Prepare for removing the global FinaleWidget LUT
InFine|FinalePageWidget: FinalePageWidget has ownership of child FinaleWidgets
InFine|FinaleInterpreter: Cleanup
Merge branch 'master' into common-episode-definition