[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


Changed.

My reasoning for making the function public was that it is fully functional for a precomputed kernel. Olivier reminded me of the fact that public functions, if changed in the future need to be deprecated etc., and since all this kernel stuff is not fully established yet, it is definitely better to keep this private.

Dividing the function in 2 was premature optimization: I was hoping to be able to reuse the same decomposition for a potential grid search with refinement. As suggested, I merged them into 1 function.