(WIP) Sparse models: S-LASSO and TV-l1

- Supports TV-l1 and S-LASSO priors
- Supports logistic and squared losses
- Has cross validation
- Can automatically select alpha by CV (+ automatic computation of useful alpha ranges for the CV)
- Warning: User must supply l1_ratio
All right, got it.
maybe: precomputed "spatial derivative + id" array

In nilearn/decoding/sparse_models/common.py:
> > +
> > +
> > +def get_gradient_id_shape(img_shape):
> > +    """Return the shape of the gradient + id operator output.
> > +
> > +    """
> > +    return [len(img_shape) + 1] + list(img_shape)
> > +
> > +
> > +def tv_l1_from_gradient(gradient):
> > +    """Our total-variation like norm: TV + l1
> > +
> > +    Parameters
> > +    ----------
> > +    gradient: array
> > +       precomputed "gradient + id" array
>
> There is indeed a name collision between the image spatial gradient 
> and the derivative of a function.
>
> With Gaspar we had decided to call gradients in the sens of 
> derivatives 'derivative'. This is not standard, but removes the 
> confusion. In addition, here, we could use the term 'img_gradient'.
>
> —
> Reply to this email directly or view it on GitHub 
> <https://github.com/nilearn/nilearn/pull/219/files#r17048340>.
>