Improve performance of CPR preconditioner.

This restores the performance to approximately the level it had before the change to support non-diagonal well jacobians, at least for SPE9. All changes are to the eliminateVariable() method.
 - Explicitly compute and apply the inverse.
 - Change loop ordering to apply inverse only (num_eq - 1) times, instead
   of (numeq - 1)^2.
 - Use UmfPackLU instead of SparseLU.

It is surprising to me that the solve() method of SparseLU seems so much slower than matrix multiplication. There are two points that might warrant discussion:
 - Use of explicit inverse is usually frowned upon. It is in some sense a desperate measure. I would like to have confirmation that this works fine on Norne before merging.
 - We may want to reinstate the explicit handling of the diagonal case.