[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.
This same "optimization" is used below between lines 777 and 785. I do first an iteration over `n_features - n_active` and then `n_features intersection n_active` (which is n_active itself), for the same reason, if there is a kkt violation in `n_features - n_active`, I need not bother to check `n_active` again.