Made VertexArray non-virtual.
Cached it's creation in GuiTexturedQuad to avoid repeatedly instancing it.
Drag in some improvements to the Renderer matrix push/pop and mode setting.
Use the automatic push/pop mechanism.
Reset the viewport when the screen is switched too rather than every time it calls Draw3D.
remove unbalanced matrix pop ops
fix stack depth assertions
don't expose GL constants
use correct stack
use std::stack for the matrix stacks

really no need to roll our own here
remodel ScopedMatrixPushPop as MatrixTicket, since its so similar to StateTicket
rename pRenderer to r for convention/consistency
remove renderer tests. we can assume it exists
avoid narrowing conversions