[MRG] 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
- [x] release the GIL for multi-task variant.
- [x] benchmark the scaling for instance by hacking the cross_val_score function to make it possible to use the threading backend instead of multiprocessing
If you run `cython -a sklearn/linear_model/cd_fast.pyx` you will see that this line causes some python wrapping overhead. I suppose this is caused by the double indexing `X[jj][ii]` which is probably not automatically optimized by cython. 

`X[jj, ii]` makes it possible to remove that overhead.

The same problem also appears at line 640, 702 and 705.

Also: PEP8 convention would favor the `X[jj, ii] ** 2` notation (with whitespaces around `**`).