ENH add joblib caching to Pipeline

Hello,

I recently added optional Joblib caching to Pipeline to avoid redundant computations / save the outputs for a personal project. I found this useful, and so figured I'd offer it up as a pull request. It passes `make test`, pep8, and pyflakes, but I'm new to open source and trying to learn (fresh out of college...), so feel free to tell me this needs more tests, is a bad idea, should change stylistically, etc.

Also, I read the contributing page, but apologies if I'm nonetheless following this process improperly.

-Dave
Please see other instances where memoization is performed, like https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/cluster/hierarchical.py#L710. Structure your usage similarly (accept a path, or a `Memory` instance, defaulting to `None`). Instead of a global `Memory` instance, you don't use the decorator form, and just use `memory.cache(my_func)(estimator, ...)`