[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~~
hackish ... :)

why not making a separate private function rather than using an instance method? It is also suspicious as every job will modify a different copy of the instance when using multiprocessing.