Preconditioner refactoring.

1. Added a Preconditioner interface.
2. SCHUR_JACOBI is now its own class and is independent of
SuiteSparse.

Change-Id: Id912ab19cf3736e61d1b90ddaf5bfba33e877ec4
diff --git a/internal/ceres/solver.cc b/internal/ceres/solver.cc
index e612c26..6d38535 100644
--- a/internal/ceres/solver.cc
+++ b/internal/ceres/solver.cc
@@ -185,8 +185,7 @@
     if (linear_solver_type_used == SPARSE_NORMAL_CHOLESKY ||
         linear_solver_type_used == SPARSE_SCHUR ||
         (linear_solver_type_used == ITERATIVE_SCHUR &&
-         (preconditioner_type == SCHUR_JACOBI ||
-          preconditioner_type == CLUSTER_JACOBI ||
+         (preconditioner_type == CLUSTER_JACOBI ||
           preconditioner_type == CLUSTER_TRIDIAGONAL))) {
       StringAppendF(&report, "\nSparse Linear Algebra Library %15s\n",
                     SparseLinearAlgebraLibraryTypeToString(