draw: Fix uninitialized shininess cause weird model color in GeForce cards

The shininess parameter was not passed to GLSL in DrawMQOPose().

The uninitialized shininess parameter behaves differently between GeForce
and Radeon graphic cards.  Radeon works as if it's 0, which is normal.
GeForce seems to have some extremely large value for shininess, which
results in strange white-black monotone color pattern.
draw: Properly switch textures by uniform parameter in fragment shader

Texture availability is passed to shaders by uniform variables (one for
each texture unit), but old codes exploit unused built-in uniform
parameter as the flag's container (gl_TextureEnvColor) in the hope of
reducing number of uniform variables may help improving performance.

Although, this is so counterintuitive, error prone and not really
efficient.  We'd eliminate usage of gl_TextureEnvColor in this way.

I wonder how GPU optimizes branching in shader languages.  If it's not
smart enough to predict branches, we may improve performance by expanding
branches into separate sources, but it's not likely.  Either way,
reducing number of uniform variables won't help while branches are
still there.