[WIP] Ridge path

Adressing https://github.com/scikit-learn/scikit-learn/issues/3373

A first implementation of a ridge path using `'eigen'` solver. This solver is now available in `ridge_regression`, which calls upon a reduced functionality of `ridge_path`.

Next steps:

- The same path approach can be straightforwardly used with SVD as well: Write svd path and replace in ridge_regression
- Attack `RidgeCV`: Replace the `GridSearchCV` by `ridge_path` if `eigen` or `svd` are selected.
- Incorporate `ridge_path_looe` from the gist https://gist.github.com/eickenberg/e9eb106f12e40d017fd0
- Adjust `RidgeCV` to use the looe functionalities


I basically copied the logic of the `ridge_regression` function, which doesn't fit the intercept either. I think the reason there may have been to avoid inconsistent behaviour when dealing with sparse matrices, because centering them is impossible without densifying them. However, if this is the case, then, since `ridge_path` only has support for sparse matrices in the eigen kernel ridge, and actually densifies in that case, I would be all in favour of adding `fit_intercept=True` to this function. The main reason is that it would make the code in `RidgeCV` much much lighter (currently I have to center each fold separately and undo all that for prediction). In this case, the function would have to return the intercept as well. Could you comment on this @mblondel ?