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 argue that topLEft and bottomRight are not growing in the same direction along the axises
I would prefer bottomLeft = XY(0,0) = UV(0,0) = Rect.min() and topRight = XY(1,1) = UV(1,1) =Rect.max()
BUt it's just me :)