Add some unhandled sampler types in uniform serialising
Split texture display shaders into precompiled variants

* GL won't let you define too many texture uniforms, and currently the tex
  sampling code blows it for the texture display shader. So we split it
  by float/uint/sint and pick the right compiled version.
Don't switch to GL context to fetch VAO/FBO if it's NULL!

* If the 'context shared' VAOs/FBOs hack is on, their context is set to
  NULL (so any context will match the resource), but this also means we
  shouldn't try and bind that context to fetch data.
Handle matrices as GLSL program input/output variables