[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 Is there are a way of accessing the row-wise address? i.e to do &Q[ii, 0] just using the address of the first element, something like, *(Q + ii) in C++ . This would make it independent of whether it is C or Fortran contiguous.

`&Q[ii, 0]` should be valid to access the address of the first item of the ii-th row, and actually it seems to work since the tests pass. The problem is that we have a performance regression. I thought it might be coming from this use of typed memory view for Q but maybe it is actually cause by another change.