Extract private base classes for graphics driver modules
There's quite a bit of duplication between our various graphics driver implementations, and that will only get worse when we add OpenXR (which is modelled on Vulkan and EGL). Factor out some base classes.
These are not part of the public API for diagnostic tools.