New Sparse

This PR is dedicated tp sparse matrix. My plan is to have sparse.py support domains by the time this PR is ready to  get merged. One part of this PR is the last commit of #2 .