A better way to create a response function for CSD

This implementation includes the recursive calibration of the response function for CSD, Using an FA threshold is not a very robust method.It is dependent on the dataset (non-informed used subjectivity), and still depends on the diffusion tensor (FA and first eigenvector), which has low accuracy at high b-value. This function recursively calibrates the response function, for more information see Tax et al. NeuroImage 2014.

This implementation is slow only on one line (788) which calls real_sph_harm. I would appreciate any help to optimize this function. Thx!
We don't need to fix this for this PR, but we should standardize `response` and `.S_r` a little. If these attributes are not wildly used maybe we just keep them as local or private variables instead of exposing them. If we do expose them it would be good to define what values/types the user can expect to get independent of how the model was initialized.