gl-renderer: Handle SHM formats much more generically
Building on some of the previous work, now that we have pixel formats properly declared and buffer state handled correctly, we can start deleting a lot of the special-case code we'd built up inside gl-renderer to handle SHM formats.
By the end of this series, all the format-specific code has been removed within the SHM path (with the exception of format advertisement which still needs to be specifically added). RGB formats draw everything they need to know from pixel-formats, and YUV formats share code with the EGLImage YUV -> RGB path.
As a bonus, SHM now starts supporting YUV444.
This also fixes an anomaly in the dmabuf path, where we would choose GL_TEXTURE_EXTERNAL_OES
for multi-planar formats for no good reason.