[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


This function uses the eigendecomposition of the gram matrix (`X.dot(X.T)` in the linear kernel case, and here we treat only the linear case) to calculate a ridge path. If `mode` is specified to normal, then it will return dual coefficients, or, if `gramX_test` is specified, predictions on the corresponding test samples. If `mode` is set to `loov` or `looe`, then analytical Leave-One-Out error or prediction values will be returned. This function is multi-target and multi-penalty.