Algorithms and Data Structures for Sparse Symmetric Gaussian Elimination