Substantial Improvements Made

1) Performance increase
2) Conformant to flake8 convention, except some violations to capital
letters and long sentences rules
3) Added the option of naive backpropagation (no fancy optimizer) to
support partial fit
4) Added the option to choose any scipy optimizer for optimization,
including, lbfgs, cg, newton-cg and so on.