[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 parametrization of `coef_` and `intercept_` is different from that of other linear models that expose those public attributes. Wouldn't it be possible to instead expose a new parameterization for the public `coef_` and `intercept_` attributes such as:

- `coef_` = `old_coef_`
- `intercept_` = `old_intercept_ - np.dot(xbar_, old_coef_.T)`

This way LDA could directly inherit from the `LinearModel` mixin class to implement its `decision_function` method and the private `_decision_function` could be removed along the way.