Optimize Octree memory layout

Previously Nodes and Surface-pointer lists in Octree were in fairly
random order, due to the way the tree was constructed.

This commit re-orders them after building to be in breadth-first
search order.

This seems to yield a 3-4% speedup on complex scenes.