support adaptive time steptting based on newton solver

Apart from several bugfixes, the followings are main changes
- MathLib::NewtonRaphsonMethod can return the number of iterations and last error.
- NumLib::INonlinearSolver (a base class of NumLib::Newton) provides recordLog(BaseLib::Options &op) which stores log of the last non-linear solver computation
- TimeStep functions takes log which can be used to calculate next time step