Restructure fully implicit blackoil simulators

This refactors the SimulatorFullyImplicitBlackoil class (called Sim below) and the two programs (sim_fibo_ad and sim_fibo_ad_cp) that use it. The important changes are:
 - The main time step loop now is in the Sim::run() method instead of main().
 - Superfluous code and output has been removed.
As a consequence, we no longer construct a new Sim object for every time step (we still construct a new FullyImplicitBlackoilSolver though). This is meant as a baseline for further changes, I have chosen to make this a separate PR to make the intended follow-up PRs (well states handling non-constant number of wells for example) easier to read and review.