Add uint type
Check bindpoint isn't -1 (for non-buffer-backed uniforms)
Handle half floats as well for position data
Sort of handle separable programs and program pipelines

* Need to find a better way of solving the non-immutable-shader-reflection
  given baked in uniform values. Probably expose the uniform values mapping
  to the user, and for D3D it just becomes trivial and unchanging.
* Also I need to create separable programs per-shader for use for
  reflection in that case, but thanks to the stupid gl_PerVertex
  redeclaration that becomes a nightmare.
Fix array overrun
Make sure outputs are always erased