NOTE:
Replaced `dispatch_async` to `CFRunLoopPerformBlock`, as it was always
dispatching to the main queue. `dispatch_async` is not reentrant,
meaning that a nested call to dispatch and wait would block forever.
`CFRunLoopPerformBlock` allows this behaviour, to enable the synchronous
calls such as `captureOutputImage` and `captureSourceImage`
Introduced `OEGameStartupInfo` to capture startup parameters for
loading a core and ROM.
A future iteration of this API will provide a generic container.