Implemented full tinting for layers instead of just alpha. (GL backends only.)

This means you can render images multiplied with a tint-color. The tint color
is ARGB so it effectively subsumes alpha. The old alpha() and setAlpha() APIs
remain because often you just want to think about alpha, not tint, and because
the non-GL backends only support alpha (it would be weird to foce you to set
your alpha as part of a tint color when tinting is not even supported).

Because tint contains alpha and tint is passed per-vertex (or per-quad for the
quad shader), shaders no longer use an alpha uniform, which means that we no
longer have to flush the shader if you are rendering from a texture atlas and
just change alpha (or tint). That should improve performance in such cases.

Bruno originally wrote this patch, but I ended up pretty much rewriting it to
combine tint and alpha and to do everything with a 32-bit int as far down as we
can go and then two 32-bit floats when it comes time to pass the tint to the
shader.
Split the indexed tris shader program into reusable bits.

Also fixed the ShaderTest shaders. With the new reusable bits, it's easier to
reuse stock parts of the IndexedTrisShader and reduce future breakage.