factor out Solver::Step from Solver::Solve

This will allow interactive stepping of the solver, e.g. from Python.
Methods overriding Solver::PreSolve should now call Solver::PreSolve.
It's okay to call Solver::Step without first calling Solver::PreSolve.
[pycaffe] expose SGDSolver::Step as SGDSolver.step
Merge branch 'solver-step' of github.com:longjon/caffe into switch-layer