Don't assume program state is user state

The SolverImpl::Solve() method incorrectly assumed that the
state pointers inside the parameter blocks always pointed to
the user state at the start of the method. That is not true.

Change-Id: I73f8eeda453422c99e09d71a3cd0bfa92dd45742
diff --git a/internal/ceres/program.cc b/internal/ceres/program.cc
index 444b102..529e4a3 100644
--- a/internal/ceres/program.cc
+++ b/internal/ceres/program.cc
@@ -86,11 +86,19 @@
 
 void Program::CopyParameterBlockStateToUserState() {
   for (int i = 0; i < parameter_blocks_.size(); ++i) {
-    parameter_blocks_[i]->GetState(
-        parameter_blocks_[i]->mutable_user_state());
+    parameter_blocks_[i]->GetState(parameter_blocks_[i]->mutable_user_state());
   }
 }
 
+bool Program::CopyUserStateToParameterBlocks() {
+  for (int i = 0; i < parameter_blocks_.size(); ++i) {
+    if (!parameter_blocks_[i]->SetState(parameter_blocks_[i]->user_state())) {
+      return false;
+    }
+  }
+  return true;
+}
+
 bool Program::Plus(const double* state,
                    const double* delta,
                    double* state_plus_delta) const {