Fix Intel MKL Pardiso symbolic factorization
This branch fixes an issue of the Intel MKL Pardiso linear solver which failed sometimes during the solution phase if the symbolic factorization was reused from a previous step. The new implementation uses a SHA1 checksum of the sparse matrix pattern in order to control when the symbolic factorization must be performed again.