sparsity pattern does not use set anymore but vector

This was necessary as std::set takes about three
times the memory of a std::vector leading to the
sparsity pattern taking more memory than the
matrix itself. The additional std::find should
be neglectable as the size of the vectors is
rather small.