Error Control and Adaptivity in Scientific Computing