Misfit, Objective and sum/mul are picklable

Misfit, Objective and sums/multiplications thereof where not picklable.
This was because of the heavy use of instance methods (overwriting a
method at run time) when adding/multiplying. So I got rid of this. Now,
value, gradient, hessian, predicted, and residuals check if the object
has self._parents set (a sign that it is the result of +/*). If so, then
the return the sum/multiplication as needed. This gets rid of the used
of instance methods and allows the classes to be pickled.

A side effect is that subclasses of Objective now need to implement
_get_value, _get_hessian, and _get_gradient instead.

Pickling is important for storing solvers to use later and for
parallel processing. multiprocessing passes objects to other processes
using pickle.