[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.
```
In [1]: r, i = np.random.rand(10000), np.random.randint(10000, size=500)

In [2]: %timeit r[i]
100000 loops, best of 3: 4.25 µs per loop

In [3]: %timeit r.take(i)
100000 loops, best of 3: 2.29 µs per loop

In [4]: %timeit r.take(i, mode='clip')
1000000 loops, best of 3: 1.74 µs per loop
```