[MRG+1] LDA refactoring

OK, here is a new version of the LDA class with (optional) shrinkage. The one in #3105 was already very messy, so I thought I'd start from scratch. By default, nothing has changed and the old SVD-based code is used.

When using the shrinkage approach based on Ledoit Wolf shrinkage, it is important that the data are standardized (centered and scaled to unit standard deviation).

TODO list:

- [x] `svd` solver
- [x] `lsqr` solver
- [x] `eigen` solver
- [x]  Ledoit Wolf shrinkage (`lsqr` and `eigen` solvers only)
- [x] support for numerical value for `alpha`
- [x] unit tests
  - [x] test that solvers return the same results (up to numerical errors)
  - [x] test the transform method
This is the only issue I'm still struggling with. In fact, the decision planes are almost identical for all 3 solvers. However, the coefficients are not (except in the binary case where I now subtract the two decision values). It seems like the svd solver uses some kind of transformation, but I don't have the time to try to understand this piece of code (in fact the reason for the whole refactoring was because nobody really understood what this code was doing).

In addition, I tested the results with a MATLAB implementation of LDA, and the coefficients are very close for my solvers (`lsqr` and `eigen`). I suspect it might have something to do that the SVD solver removes the overall mean, and I don't.