Add interface for ODEs

This uses the CRTP and self-typing to preserve concrete types through
abstract interfaces.
Add implementations of some general ODE states
Add OdeStepper interface
Add interface for error-measuring ODE steppers
Add implementation of Euler's method
Implement 4th-order Runge-Kutta method

Current implementation only uses linear interpolation for dense output.
Implement Bogacki-Shampine method