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 :-) 
It's now implemented in *both* the Model and the Fit, following @MrBago's
suggestion. I think that's pretty nice. You can use the API you prefer,
depending on your use-case. Indeed, in the kfold cross-validation, I use
the Fit object's `predict` method.


On Wed, Jun 18, 2014 at 5:33 PM, Eleftherios Garyfallidis <
notifications@github.com> wrote:

> In dipy/reconst/tests/test_dti.py:
>
> >      assert_array_almost_equal(dmfit.predict(gtab, S0=100), S)
> > -
> > +    assert_array_almost_equal(dm.predict(dmfit.model_params, S0=100), S)
>
> Why you selected to have the predict method at the Model class and not at
> the Fit class?
> I would think that because you have already the params after the model.fit
> call then it would make sense
> to call predict from the Fit. Can you elaborate a bit on this?
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/nipy/dipy/pull/335/files#r13948572>.
>