CanvasDRM: Fix handling of Ctrl-C. Because the Ctrl-C was being handled by CanvasDRM directly, DRMState had no knowledge of the event, and wasn't able to detect it properly when select() came back with an error. Move the quit handler into DRMState, and give it a public should_quit() method that CanvasDRM can call. This is better encapsulation, and allows DRMState to properly detect the user interrupt and release the GBM resources so the console isn't hung when the application exits.