[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 is a slight optimization.

1. I am not excluding the ever-active set, since I am modifying it internally or appending it to the `active_set` in `compute_strong_active_set` , and this is being returned.
2. In this `if` block and `if not kkt_violations` below, together I am iterating over the entire `strong_active_set` . In the first `if` block I am iterating over the features in `strong_active_set` but not in `active_set` (A - B), and in the second `if not kkt_violations` I am iterating over the intersection of the features (A intersection B). My reasoning behind this is that once the `kkt_violations` is violated for (A - B), there is no need to check the active_features again (the `if not kkt_violations`) because we anyway need to perform the coordinate update again.

Maybe I should make this clearer?