[WIP] Releasing the GIL in the inner loop of coordinate descent

- [x] release the GIL in the dual gap check (need to replace numpy calls by BLAS equivalents)
- [x] release the GIL in the sparse input variant
- [x] release the GIL for the precomputed Gram matrix variant
- [ ] benchmark the scaling for instance by hacking the cross_val_score function to make it possible to use the threading backend instead of multiprocessing
@ogrisel  The natural memory layout of is "C-contiguous" . The only example causing a problem is the one in the `graph_lasso.py` example.

The line(s) causing a problem are.

    daxpy(n_features, -w_ii, <DOUBLE*>(Q.data + ii * n_features * sizeof(DOUBLE)), 1,
               <DOUBLE*>H.data, 1)

Previously this is used to give the same result for both C and F contiguous, since Q is symmetric.

However when I replaced it by, 

    daxpy(n_features, -w_ii, <DOUBLE*>(&Q[ii, 0]), 1,
               <DOUBLE*>H.data, 1)

This would work only if Q is C-contiguous, since I'm incrementing by one. A possible workaround would be by using &Q[0, 0] somehow similar to Q.data, but I keep getting segmentation errors.