Copying the cache when adding Misfits and make things picklable

The cache was not being copied when added a Misfit to something else. All objects were pointing to the same dict and that was causing problems. 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. 

Another thing that breaks parallel  support is lack of "picklability" of Objective and Misfit. I've fixed this by getting rid of all method overloading in favor of a simpler and easier to read solution.