[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~~
> It's not actually a sparse implementation, but it computes the updates the same way as sparse_sag in sag_fast.pyx. The pure python implementation iterates though every feature, not just the non-zero ones. The reason I'm passing sparse=True is to do the fit with a decay in the intercept.

then call it lazy not sparse if it's to update only non-zeros

for decay of intercept I am not sure to follow