The code of coordinate descent was optimized algorithmically reducing
the number of matrix operations and eliminating callbacks. The
resulting code is thus simpler but less flexible in theory, although
in my oppinion this feature was not really used.
In my computer this gives a 150x speed improvement on the example
plot_lasso_coordinate_descent_path.py.
Further improvements should be done, notably those that exploit
sparsity. This is planned but not done in this commit.
Other changes:
* squash enet_cd_fast.pyx and lasso_cd_fast.pyx into cd_fast.pyx.
* remove python code that duplicates functionality of cython code.
* Refactor test for this module, as they where mostly based on the
callback code.
* Modify plot_lasso_coordinate_descent_path.py to compute only the
lasso path.
* throw a warning if dual gap > tolerance.