Solver::Options::ordering* are dead.

Remove the old ordering API, and modify solver_impl.cc
to use the new API everywhere.

In the process also clean up the linear solver instantion
logic in solver_impl.cc a bit too.

Change-Id: Ia66898abc7f622070b184b21fce8cc6140c4cebf
diff --git a/include/ceres/solver.h b/include/ceres/solver.h
index 0e94ee8..95d6ba0 100644
--- a/include/ceres/solver.h
+++ b/include/ceres/solver.h
@@ -90,17 +90,13 @@
 #endif
 
       num_linear_solver_threads = 1;
-      use_new_ordering_api = false;
-      ordering_new_api = NULL;
-      num_eliminate_blocks = 0;
-      ordering_type = NATURAL;
 
 #if defined(CERES_NO_SUITESPARSE)
       use_block_amd = false;
 #else
       use_block_amd = true;
 #endif
-
+      ordering = NULL;
       linear_solver_min_num_iterations = 1;
       linear_solver_max_num_iterations = 500;
       eta = 1e-1;
@@ -121,6 +117,7 @@
       update_state_every_iteration = false;
     }
 
+    ~Options();
     // Minimizer options ----------------------------------------
 
     TrustRegionStrategyType trust_region_strategy_type;
@@ -232,41 +229,10 @@
     // using this setting.
     int num_linear_solver_threads;
 
-    // Whether the old or the new ordering API should be used. If this
-    // is true, all assignments to Solve::Options::ordering_type,
-    // Solver::Options::ordering and
-    // Solver::Options::num_eliminate_blocks are ignored.
-    bool use_new_ordering_api;
-
-    // Ordering object for the new ordering API. If NULL, then all
-    // parameter blocks are assumed to be in the same group and the
-    // solver is free to decide the best ordering. (See ordering.h for
-    // more details).
-    Ordering* ordering_new_api;
-
-    // For Schur reduction based methods, the first 0 to num blocks are
-    // eliminated using the Schur reduction. For example, when solving
-    // traditional structure from motion problems where the parameters are in
-    // two classes (cameras and points) then num_eliminate_blocks would be the
-    // number of points.
-    //
-    // This parameter is used in conjunction with the ordering.
-    // Applies to: Preprocessor and linear least squares solver.
-    int num_eliminate_blocks;
-
-    // Internally Ceres reorders the parameter blocks to help the
-    // various linear solvers. This parameter allows the user to
-    // influence the re-ordering strategy used. For structure from
-    // motion problems use SCHUR, for other problems NATURAL (default)
-    // is a good choice. In case you wish to specify your own ordering
-    // scheme, for example in conjunction with num_eliminate_blocks,
-    // use USER.
-    OrderingType ordering_type;
-
-    // The ordering of the parameter blocks. The solver pays attention
-    // to it if the ordering_type is set to USER and the vector is
-    // non-empty.
-    vector<double*> ordering;
+    // If NULL, then all parameter blocks are assumed to be in the
+    // same group and the solver is free to decide the best
+    // ordering. (See ordering.h for more details).
+    Ordering* ordering;
 
     // By virtue of the modeling layer in Ceres being block oriented,
     // all the matrices used by Ceres are also block oriented. When
@@ -523,7 +489,6 @@
     LinearSolverType linear_solver_type_used;
 
     PreconditionerType preconditioner_type;
-    OrderingType ordering_type;
 
     TrustRegionStrategyType trust_region_strategy_type;
     DoglegType dogleg_type;