[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.
What do you mean by the issue of memory strides? Pulling out the feature columns to check will have a memory cost of the order of the size of X. It's unfortunate, but it's possible that it will make for the speed-up you're looking for.