[WIP] Strong rules for coordinate descent

Fixes https://github.com/scikit-learn/scikit-learn/issues/229

This implements strong rules for discarding non active features in coordinate descent. I believe this works. However it is really slow. 

TODO:

- [ ] Decide whether to migrate the strong_active_set and check_kkt_conditions to Cython
- [ ] Fix the lazy centering of sparse matrices that gives slightly different results.
I mean that `abs(loss_derivative - penalty) > 1e-3 + rtol * abs(penalty) <=> abs(loss_derivative/active_coef - penalty/active_coef) > 1e-3/abs(active_coef) + rtol * abs(penalty / active_coef)` I think. But `penalty / active_coef` is invariant through the loops, so the calculation logic can be outside.