Timestepcontrol

This PR includes all utility classes needed to enable the Blackoil simulator with adaptive time stepping. By default this is disabled. One needs to set the parameter in the .param file to enable the adaptive time stepping.

The AdaptiveSimulatorTimer implements a class for handling the time steps. The API follows that of SimulatorTimer closely. 

TimeStepControlInterface describes the interface for a time step control method. Currently, there are two implementations, the PID and the PID + target iterations. The PID is described in the literature links given in the documentation. 

AdaptiveTimeStepping implements the adaptive sub cycling for a given time interval, in case of the Blackoil simulator this is a report time step. 

Parameters to be chosen are: 
timestep.adaptive=true (default is false)
timestep.control=pid or pid+iteration (default is pid)
timestep.control.targetiteration=50 (default is 25)
solver.verbose=true (default is false)
solver.restartfactor=0.2 (default is 0.1)
solver.initialfraction=0.5 (default is 0.25) This is the faction of the first time interval taken as guess.
solver.restart=2 (default is 3) 

The solver.* parameters are basically to manage the restart of the solver when convergence failed. 
The timestep.* parameters are for managing the time step control. These parameters are to be added to the .param file. I'll try to upload a SPE9 example without pre-described time steps to the opm-data repo.

I tested the timestep control with SPE1 and SPE9 and NORNE. 
I seems to work flawlessly. Especially for SPE9 with the adaptive time steps the simulator runs faster. 
This patch also includes solver restart in case of failed convergence.
This PR needs to be merged before PR #216 in opm-autodiff.

Why catch-by-object rather than catch by (const) reference here (and below)?  That's prone to slicing which is unlikely at the moment but may become an issue later.