Extends the interface of the abstract base class by the methods
virtual void advanceTimeStep(), virtual void setTimeStepSize(Scalar dt),
virtual Scalar maxTimeStepSize(), and virtual bool finished().
Changes the internal logic of the time loop step size computation. The private variable maxTimeStepSize is no longer needed. Instead the maxTimeStepSize is computed in the method with the same name and can be overloaded. The new time step can thus always be determined as the minimum of a given timestep and the maximum time step