Basic engine abstraction and SDL2 implementation.