A lot of improvements

1) Optimization_method parameter for selecting any scipy optimizer
2) SGD is also supported
3) Improved minibatch creation using scikit's gen_even_slices (much
faster)
4) Support of loss functions