Improve error handling in Function2RoughClonerTest.
Have InMemoryPipeline run everything in parallel.

This works, but really, the client should
be able to choose between parallel and single-threaded
for better debugging.

Default should be parallel, though.

The code is veeeeery hack, which I blame on
the difficulty of passing exceptions between
threads in Java. This is the best I could come up with.
I apologize.
Allow shallow copies of mappers.

When mappers get cloned, it's important that
the InMemoryShufflers that they hold on don't
get deep copied.