Modularize the build.

1. Add -DLINE_SEARCH_MINIMIZER to CMake to make the line search
   minimizer optional.
2. Better handling of -DSUITESPARSE/-DCXSPARSE in top level cmake
   file.
3. Disable code which will never be used if SuiteSparse and/or
   CXSparse is not available.
4. Update build docs.
5. Update jni/Android.mk
6. Minor lint cleanup from William Rucklidge.

Change-Id: If60460a858000df82faed7a6bb056dd2bfdde562
diff --git a/internal/ceres/generate_eliminator_specialization.py b/internal/ceres/generate_eliminator_specialization.py
index b14b145..caeca69 100644
--- a/internal/ceres/generate_eliminator_specialization.py
+++ b/internal/ceres/generate_eliminator_specialization.py
@@ -104,7 +104,7 @@
 // THIS FILE IS AUTOGENERATED. DO NOT EDIT.
 //=========================================
 //
-// This file is generated using generate_eliminator_specializations.py.
+// This file is generated using generate_eliminator_specialization.py.
 // Editing it manually is not recommended.
 """
 
@@ -204,10 +204,10 @@
     template = SPECIALIZATION_FILE
     if (row_block_size == "Eigen::Dynamic" and
         e_block_size == "Eigen::Dynamic" and
-        f_block_size == "Eigen::Dynamic") :
+        f_block_size == "Eigen::Dynamic"):
       template = DYNAMIC_FILE
 
-    fptr.write(template % (row_block_size, e_block_size, f_block_size));
+    fptr.write(template % (row_block_size, e_block_size, f_block_size))
     fptr.close()
 
     f.write(FACTORY_CONDITIONAL % (row_block_size,