Add a new solution. Note that it will not be added to the pool of solution
right away. One must call Synchronize for this to happen.
Works in O(num_solutions_to_keep_).
Returns the variable value of variable 'var_index' from solution
'solution_index' where solution_index must be smaller than NumSolutions()
and 'var_index' must be smaller than number of variables.
Updates the current pool of solution with the one recently added. Note that
we use a stable ordering of solutions, so the final pool will be
independent on the order of the calls to AddSolution() provided that the
set of added solutions is the same.
Works in O(num_solutions_to_keep_).