Xval

This revives #235. Now that all the other elements are in place, I think that this is ready for review and in principle ready to be merged upstream (once it's been reviewed and fixed up, of course!). I am excited about this PR - evaluation of DWI models is something that I have been thinking a lot about in the past couple of years, since I started working on DWI. 

This PR also demonstrates the power and elegance of the uniform `Model`/`Fit` API we have in place. GGT!

For now, this PR only implements cross-validation for CSD and for the tensor model, but future work could extend this to other models, by implementing their `predict` methods. 

Also : a lot of PEP8 fixes in the CSD module and elsewhere :-) 
OK - I see what you mean. I think that there may be grand unification at some point, and we might want to make sklearn a dependency as we include more models that depend on a variety of regularized regression procedures (...), but for now, I think that it would be OK to go with our code for this, without incurring. It would be rather easy to replace some bits of the code here to use this iterator, but for now I don't see a huge benefit to incurring this dependency.