Implement "segregation" of mesh groups

Model::renderMeshes() was constantly switching shader programs between every mesh of a model. This causes a fairly significant performance hit on models with lots of sub-meshes (like the Westfield model). This change does a preprocessing pass on the meshes of the model geometry and stores a list of mesh types which require each different shader type. renderMeshes() is changed to support doing a single group pass at once only changing the shader program once per group type. This makes the Westfield model jump from 15fps to 55+fps on my low end MBP.

This PR also includes some enhancements to the timing stats.
QList actually stores elements inline (like a QVector/std::vector) if they're pointer-size or smaller (otherwise, it stores them as an array of pointers--it's not actually a linked list, which is what QLinkedList is).  Still, the only advantage would be if you were going to prepend things (QList, unlike QVector, preallocates space at the beginning of the array).