Added vmin-vmax to contour and countourf
vmin-vmax don't work with contour

Made a recipe for contour plots. Apparently vmin-vmax aren't working for
contour. So I removed it from contour and left only in contourf.
Copying the cache when adding Misfits

The cache was not being copied when added a Misfit to something else.
This meant that altering the original Misfit instance changed the cache
of the sum. That breaks computations in parallel because multiple places
will try to write to the same dict. Fixed this by shallow-copying the
cache when adding.

There is still a problem when adding 2 Misfits. The 'other' in the
addition (right side) is still the original. So this will also share a
cache. A way would be to copy the cache of 'other' if it has it.
Updated changelog for vmin-vmax args in contourf
Merge pull request #89 from leouieda/vmin-vmax-contourf

Added vmin and vmax to contourf
Adding Objectives stores copies of parent objects

Modified add and mul overloads in Objective to keep copies of the parent
Objectives that originated them. This is so modifying the originals
doesn't affect the sum/mul. Also had to make wrapper methods use the
stored parents instead of curried versions of the original methods.

Added doctest for adding 3 Misfits.
Misfit addition copies the cache of parents

When adding Misfits, it's not enough to copy the cache of self. What is
actually used is the cache of both parents. So now I copy the cache of
both parents as well as model and positional argument dicts.
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.
Added recipe for joint eqlayer of grav + gradients

Uses synthetic ground gravity and airborne gravity gradients to fit an
equivalent layer. Then uses the layer to interpolate gravity at ground
level. Comparing results with normal interpolation shows how much better
this is.
Merge branch 'master' of github.com:leouieda/fatiando
Merge pull request #92 from leouieda/cache-copy

Copying the cache when adding Misfits
Merge branch 'master' into lcurve