Make evaluate functions faster by using scipy.sparse.csc_matrix

This PR makes many functions in `gala.evaluate` vastly faster and space efficient by changing `contingency_table` to use a SciPy sparse matrix format (specifically, CSC matrix) instead of a dense numpy array.