Splitting and composition methods in the numerical integration of differential equations