Timestepcontrol

This PR includes all utility classes needed to enable the Blackoil simulator with 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
timestep.control.targetiteration=50 (default is 25)
solver.verbose=true
solver.restartfactor=0.2 (default is 0.1)
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.

I haven't looked at this in any kind of detail, but is there a reason you can't (or choose not to) defer this calculation to `std::inner_product()`?  E.g., something along the lines of
```C++
template <class Iterator>
typename std::iterator_traits<Iterator>::value_type
inner_product(Iterator begin, Iterator end) const
{
    typedef typename std::iterator_traits<Iterator>::value_type VT;

    return std::inner_product(begin, end, begin, VT(0));
}
```
with proper `#include<>`s.