[big] Refactored UniformSubroutineValue and related

Now the subroutine definition is separate from the uniform definition,
and multiple uniforms can share the same subroutine definition.

Various semi-related TODOs were created/changed/destroyed in the
process.