gl-renderer: Async output capture support
This patch series adds support for asynchronous output capture to the OpenGL renderer. If Pixel Buffer Objects (PBO) are available, a read back request is pushed, a completion listener is scheduled and repaint_output()
returns before the read back is complete. This prevents blocking the main loop while the render buffer is being read back. The synchronous path is used when PBOs aren't available.