Refactor of EngineInstance chain

Moved a lot of the `SeverEngineInstance` and `RenderingEngineInstance` shared functionality down into the `EngineInstance` class, and paved the way for a future `StandaloneRenderingInstance`