Return demo frame instance from `demo_main`.

When a demo is run from within an existing event loop, the demo doesn't
block and the demo frame must be saved to prevent garbage collection.