A Persistent Union-Find Data Structure