The existing DisjointSet data structure only supports single threaded access, which limits performance severely in some cases.
This patch implements AtomicDisjointSet based on "Wait-free Parallel Algorithms for the Union-Find Problem" by Richard J. Anderson and Heather Woll (paper). I was also inspired by an existing implementation: https://github.com/wjakob/dset/blob/master/dset.h.
I updated the Mesh Islands node to make use of the new data structure. The performance is improvement is quite good:
Island Index: few large islands: 138ms -> 38ms many small islands: 53ms -> 25ms Island Count: few large islands: 125ms -> 30ms many small islands: 47ms -> 10ms

