Cleaned up sparse implementation, wrapping functionality as exchangeable functions and moving SparseCFProjection and SparseConnectionField to topo/misc/sparse.py