Less shader boilerplate

Introduces `Uniform<T>` and `UniformMatrix<C, R>` templates that handle lookup of uniform locations and typesafe binding.