GPUTypeFromToGL: Make mildly compatible with L, LA, RGB textures.

In order to represent textures and offscreen windows in a
normalized upright, row-major data format to ease image
processing tasks and CUDA interop, PTB has to convert non-
standard textures into normalized upright textures. This is
done by the PsychNormalizeTexture() routine, which blits a
texture in "unmangled" orientation into the backing texture of
a new FBO, and then swaps the old "wrong" texture against the new
normalized one. With CUDA we have a problem here: Only RGB and RGBA
textures are renderable, so our normalize routine routinely converts
non-renderable texture formats Luminance and Luminance+Alpha into
RGB or RGBA format, but Screen's high-level code abstracts this
change away. We need the exact format for GPUmat/CUDA to calculate
the memory layout and amount to copy correctly.

Switch Screen() based texture format detection code against some
more robust glXX texture object queries. Better. However, Luminance
and RGB format are still troublesome, because Luminance gets promoted
to RGB, which itself gets represented in memory by a RGBX 4-component
format, the fourth X-component being unused. OpenGL lies to us about
this format adjustment and still reports internal formats RGB in use.
As there are apparently no queries which don't lie sometimes, we
use a heuristic: Whenever the system claims it uses a 3-component
RGB format, "upgrade it" to a RGBA format and hope for the best.

This works at least on Linux + NVidia.