Try to reduce stalls

Removed the glGetDoublev calls to retrieve the ModelView, Projection matrices and the Viewport.
Added accessor methods to retrieve cached ModelView, Projection and Viewport data.
Added an Orthographic projection function to matrix4x.
Added our own matrix stack for tracking OpenGL matrix and matrix stack manipulation.

Ugly as hell and dumped directly into Renderer instead of RendererGL2 for now.
Force everything to go through the renderer to set and get matrix information and manipulate the stack.
Added a lot more profiling.
Move the matrix stack and manipulation stuff into RendererGL2 which is better than Renderer itself.
Kill the Frustum init-from-GL pathways and usage.
Modified FaceVideoLink.cpp to use the renderers matrix methods.
Switched everywhere in GUI over to using WidgetList defined in GuiContainer.
Remove the unused clipping functions and tests from GuiTextLayout
Matrix push/pop pair to fix the SectorView.
Change a few things to const and pass-by-reference to avoid copying whole strings and vectors.
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