Algorithms and software for ordinary differential equations and differential-algebraic equations, part I: Euler methods and error estimation