[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.
you are right, the savings are not that much, 

    csc = sparse.csc_matrix(sparse.rand(10000, 10000, 0.001))
    In [21]: %timeit slice(csc, 4242)
    100000 loops, best of 3: 5.91 µs per loop
    In [22]: %timeit slice_csc_fast(csc, 4242)
    100000 loops, best of 3: 5.35 µs per loop

But I still think this should be made as a utility in `sparsefuncs.py`