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 :-) 
See @arokem this is the problem with moving blocks of code, you become responsible for for what's in them even if it's just a copy paste :). I agree with you that we should have a standard that we can all follow going forward, but fixing this issue as part of a big pull request like this makes the review more difficult. We end up reviewing things that really have nothing to do with the specific pull request. In this case reverting it is probably going to cause even more trouble. I propose that in the future moving code around, pep8 and those kinds of changes get their own PR so we can merge them quickly and move on.