[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.
On reading the algorithm again, it seems something like this to me

    for alpha in alphas[1:]:
        kkt_violations = True
        while kkt_violations:
            cd_fast(ever_active)
            strong_active = compute_strong_active()
            kkt_violations = get_kkt_violations(strong_active)
            ever_active.update(kkt_violations)
            if kkt_violations:
                continue
           kkt_violations = get_kkt_violations(n_features)
           ever_active.update(kkt_violations)