Previously cloth self-collision and other code that wants self-overlap data was using an ordinary BVH overlap utility function. This works, but is suboptimal because it fails to take advantage of the fact that it is comparing two identical trees. The standard traversal for self-collision essentially devolves into enumerating all elements of the tree, and then matching them to the tree starting at the root. However, the tree itself naturally partitions the space, so overlapping elements are likely to be mostly placed nearby in the tree structure as well. Instead, self-overlap can be computed by recursively computing ordinary overlap between siblings within each subtree. This only considers each pair of leaves once, and provides significantly better locality. It also avoids outputting every overlap pair twice in different order. Differential Revision: https://developer.blender.org/D16915