Tidy up GaussJordanElimination and use the Spire cfor macro