I reduced the header includes a lot in Titanic.h and forward
declared when I could. Titanic.h was including a lot and
a lot of functions that were including it were not using its
API. This will help make it more clear which implementation
files are using which class since they will just need to include
which ones they need.
I also moved the debug related items in Titanic.h into the debugger
header.
I also reordered several of the the header includes to be local to
global.
The original loads savegames by loading a new project hierarchy and then
deleting and replacing the existing one. This means that objects in the
original project, such as the PET control, are destroyed, leaving the
remainder of the PET code that called load operating on destroyed objects.
This workaround instead flags for a load to be done, and adds new code in
the game manager to take care of it. This way, the remainder of the PET
event handling can finish first, and it will be then safe to destroy the
original game project (including PET) and load the new savegame.