[WIP] Adding Implementation of SAG

An implementation of SAG for #3805
TODO list:
* ~~Make correct 'auto' eta0 implementation (what should be the Lipschitz Constant for regressor vs. classifier)~~
* ~~Make test pass for checking infinity or NaN in weights~~
* ~~Add doc string for Classifier~~
* ~~remove dependency on BaseSGD?~~
* ~~enable coef init and intercept init~~
* ~~allow for warm starting~~
* ~~find difference between sparse and standard implementations~~
* ~~figure out way to duplicate c seeding for test~~
* ~~add support for class weighting~~
* ~~get doctests to pass~~
* ~~get all other tests to pass~~
* ~~make it work if there is only one class present~~
* ~~add pickling~~
* ~~add sparse decay~~
The LossFunction is used by sag_fast.pyx, because you can only import Loss functions between cython files through pxd files, I decided to add the sgd_fast.pxd (which creates the .so file). The loss functions in sgd_fast.pyx should really be in their own file, but this is the work around I used. The other thing I could do is just make a loss_function.pxd and loss_function.pyx file with just Log and SquaredLoss and use that in sag_fast.pyx.