Compute volume fractions and depth fractions used as weights

Volume fractions are the fraction of the block which is used to store
residual or mobile parts. Depth fractions are the same, but for the
entire column downto each level.
Add necessary reference to std::string

Some other header must have provided this in front of us before, which
is why it wasn't caught earlier. (It is in general not possible to
forward declare std::string, because the exact type is not specified in
the standard!)
Remove dependency on Boost in header

We don't provide the iterator_range interface anymore (use RunLenView
instead!), so there is no need to have this dependency in the header.
Wrap simulator object to do VE translation effort-less

There are certain stages that is necessary to do when setting up a
VE simulation; this wrapper will take care of those for you.
Fix sample so that it uses wrapper class

Old customizations of the simulation is removed and replaced with the
logically correct way of viewing it: The simulator is wrapped by a VE
model.

The changes in the 3D code is just indentation to match up with the new
2D version, so that it only literally changes two lines in the program!
Don't store Qt Creator backup files in version control
Interface for communicating state changes to VE model

The VE model needs to know the state at all times to figure out where
the plume has been and thus where there is now residual CO2, in order
to calculate the interface from coarse-scale saturations.
Encapsulate the dance necessary to communicate state

The state object is created possibly later than the rest of the
VE model, so it cannot be syntactically bound to it; this object
provides the bridge between an actual state object and the methods
in the VE model which handles state changes.
Filter simulation through VE model

Setup a VE model for the domain and case presented to us, and pass
it to the underlaying simulator.
Dimension upscaled state from the top surface grid
Forward updating of state to the fluid properties

When the simulator changes the state, the fluid properties object is
notified with the new saturations so it can update the internal state
accordingly.
Solve integral equation for limit using pre-comp. values

If we precompute the integral for each level, then solving the equation
for a given limit becomes a search routine in an array.
Notice the max CO2 sat., and recalc. res. intf. if change

When the maximum saturation increases, it should trigger a recalc.
of the interface position (which is faster to use in the table lookup)
Find res. CO2-sat. as table index

By having this as a table index, we can efficiently calculate the
right-hand side for the saturation-interface equation later.
Find mobile CO2 plume intf. as table index

Solve the saturation-interface equation for the height of the mobile
interface. This gives us \zeta_M as a table index, which can then be
used to find the precalculated integrals for rel.perm.
Get rel. perm. for one mobile phase but the other present

There is always connate brine left in the CO2 phase, and there is
CO2 in the parts where the plume has been but is not anymore. These
will be impedients for the phase that is left, and we must know the
scaling factor (rel.perm.) that must be used to account for that.
Use norm of permeability tensor as weight

To get a scalar rel.perm. in the end, use the Frobenius norm of the
abs.perm. as weights instead of the full tensor.
Abs. perm. weights for each block in column
Precompute CO2 rel.perm. for all possible block levels
Don't update res. sat. depth in object while querying

The rel.perm. function should operate on const objects, so we cannot
infer that we get a new saturation just because someone asked for it.
(It may be that it queries the rel.perm. for all possible saturations)