backends/drm: handle multiple OpenGl contexts more correctly
In order to destroy resources from a context on the secondary GPU, that context needs to be current. We also want to destroy the context once it's no longer used, if the GPU is unplugged etc, so this commit uses shared and weak pointers to manage the lifetime of the contexts