Work on removing immediate mode GL_QUADS

This PR goes a long way toward removing all immediate mode GL_QUADS. There is still a use of glBegin(GL_QUADS) in the hair implementation. I need to think about how to best implement support for that.

All other quads have been converted to use a new GeometryCache::renderQuad() which takes several different possible options, 2d, 2d with texture, 3d, 3d with textures.

TODO: currently we cache the vbos for various quads, but for things like the cursor, magnifying glass, and audio vu level, it would be better to not cache those values. I want to add some mechanism where you can get back an ID for the quad you rendered and it will reuse that ID for some usage cases where caching is not useful.
I would recommend we don't use IndexBuffer for such small geometries,
Just repeating the values in the vertex buffer is good enough.
this is not preventing to merge as is and improve on this later. it's not a big deal we won't gain anything from it unless we draw millions of these per frame...:)