ViewerBase: Cull in same order as draw
When the threading model is DrawThreadPerContext, all cull operations take place sequentially, but on a different thread to the draw operations (which each wait for the corresponding cull). However the camera list used for culling is not guaranteed to be sorted into render order. This results in culling operations happening in a different order to draw operations, and in the worst case the first draw operation may have to wait for the last cull operation to complete.
To maximise concurrency in this case, sort the camera list before the cull loop. This can give a significant boost to FPS when using DrawThreadPerContext with unfortunately ordered slave cameras.
E.g. FlightGear next at 1080p (non-VR) is CPU bound for me, and gives around a 40% boost in FPS.