Add a polynomial solver

Add a function to find the (complex) roots of a polynomial
with real coefficients. The roots are extracted as the
eigenvalues of the (balanced) companion matrix. Also adds a test.
The polynomial solver will be needed in the Dogleg subspace
strategy.

Change-Id: Ia6626158819efb858522b7f4998649ca010d6688
diff --git a/internal/ceres/CMakeLists.txt b/internal/ceres/CMakeLists.txt
index 2914601..0d33a86 100644
--- a/internal/ceres/CMakeLists.txt
+++ b/internal/ceres/CMakeLists.txt
@@ -62,6 +62,7 @@
     loss_function.cc
     normal_prior.cc
     partitioned_matrix_view.cc
+    polynomial_solver.cc
     problem.cc
     problem_impl.cc
     program.cc
@@ -198,6 +199,7 @@
   CERES_TEST(numeric_diff_cost_function)
   CERES_TEST(parameter_block)
   CERES_TEST(partitioned_matrix_view)
+  CERES_TEST(polynomial_solver)
   CERES_TEST(problem)
   CERES_TEST(residual_block)
   CERES_TEST(residual_block_utils)