Splash screen fix

Fixes the window creation and splash screen behavior to behave as intended.

The splash screen will be displayed, and will stay displayed without the window being created until the engine and GUI initialization is complete. 

This prevents the blank window from displaying as the engine starts up and overall looks better.
Ah, ok, yeah. The splash screen stuff only really works on windows at the moment, so that's what I focused on. Didn't consider the pure virtual function would break the other stuff as-is. I'll get that fixed.