Latest Revision of Occlusion Culling Work - now it's always better and never worse

This check in includes the following:
- implementation of CoverageMapV2 - which uses a classic quad tree to store coverage. This version is experimental and not used because it performs worse than the original version
- client side debugging features for running occlusion testing using two different coverage maps
- client side visualization tools for the coverage maps
- improved implementation of pointInside() which is zippier and speeds up performance
- support for VoxelProjectedPolygons to "merge" together when the polygons can be merged to a larger convex polygon
- support in CoverageMap to merge together polygons.
- support in CoverageMap to limit the number of polygons stored in any particular region, so as to keep the performance of CoverageMap in check
- new VoxelTree::recurseTreeWithOperationDistanceSortedTimed() version of tree recursion that allows callers to recurse the tree in a time sliced manner
- tweak to PerfStat class to not display "WARNING" when the caller asked to always display the timing details (non-warning case)
- new removeFromSortedArrays() helper function
- new PolygonClip class which can be used to clip 2D polygons to the screen bounds
- changes to the ordering of the vertices for projected polygons to allow "merging" and to fix winding issues
- added BoundingBox::explandToInclude()
- added boundaryDistanceSquaredForRenderLevel() helper which can be used for boundary distances without square roots