[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.
It should be `eligible_features`, according to the paper. And maybe that correction motivates keeping `ever_active` and `eligible` distinct.

> Yes indeed ( I guess I was somehow blinded by Fabian's gist)

I haven't looked at Fabian's gist, and I almost certainly have not understood the maths well enough to know whether we can bound the number of `cd` calls so that it can be unrolled as you have it.

> but intuitively don't you think this should take a greater time than just two cd_fast calls?

Perhaps, but I was looking for correctness in that review, not efficiency.