GPUTypeFromToGL: Change call syntax, make more flexible.

Define type of operation and type of OpenGL object to operate on.
Implement recycling for textures and gpu objects, but also now allow
creation of textures if none are provided for recycling.
GPUTypeFromToGL: Always expect textures and renderbuffers in normalized upright format.

Usercode must make sure this is the case by using proper transformation
flags in 'MakeTexture', 'OpenVideoCapure' and 'OpenMovie' as explained
in help text.

-> Want the GPU backend to receive consistent upright, non-transposed,
row-major order pixel data to avoid tears & pain.
GPUTypeFromToGL: Support low-level OpenGL objects via descriptor structs.

For use within PTB imaging pipeline, where no Screen() calls are
allowed, or from 3rd party low-level OpenGL code or Horde3D rendering
engine interface or MOGL etc.
GPUTypeFromToGL: Implemet glObjType 2: Psychtoolbox virtual framebuffer.

The drawBufferFBO aka virtual framebuffer of the imaging pipeline -
capture or write to.