Shader constructor fix

Fixed issue where using the shader constructor to set uniform defaults
was subject to a macro race condition. Setting uniforms *after* super()
is now safe :)