gtest uses now the same compiler as hom3

The C compiler is now also passed through the "configure.sh" script.
Refactor of FV Solver with included Navier-Stokes and coupling support

This is a complete refactor of the FV solver that also adds support for:
  - Navier-Stokes equations for ideal compressible flow,
  - coupling of different FV solvers with each other (and different physics).

Refactor:
- simplifyed the template parameters of both the FV solver and the physics
  classes. A new macro HOM3_FV_PHYSICS_SOLVER_ is provided to do some template
  parameter alias that makes it easier for users to build solvers for the
  different physics by constructing a physics_name::Solver object or alias
  thereof. Fixes #10.
- added template parameter for the time integration method as well as tags for
  the Euler Forward and the Runge-Kutta 2 methods.
- removes solver/interface.hpp.
- simplified the boundary condition system: fixes #32
  - now there are two interfaces:
    - a grid boundary interface that satisfies the grid boundary concept, and
    - a fv boundary interface that satisfies the fv boundary concept and
      refines the grid boundary concept.
  - solvers share ownership of the boundary conditions with the grids (this
    allows storing the geometry only once).
  - the fv solver can now apply the boundary conditions to a Range<CellIdx>
    instead of to an AnyRange<CellIdx> (improving performance).
  - the methods to apply the boundary conditions are now templated with FV
    with rhs and lhs tags.
  - updated grid::helpers::unit::cube to the new boundary condition system.
  - added an is_cut_by_bndry node range filter to grid (this allows solvers to
    lazily iterate over the boundary cells).
  - simplified fv::solver's create_ghost_cells.
  - removed geometry/boundary.hpp.
  - Added a Condition class to solver::fv::bc which contains common bc
  functionality like:
    - how to compute standard boundary surface slopes, and
    - how to apply neumann/dirichlet boundary conditions to single variables.
  - boundary_cell_id is now boundary_cell_info and returns a Boundary Info
  object that contains the boundary and ghost cells ids as well as their
  relative positions: fixes #38.
- Reworked of the FV solver directory structure: fixes #47
  - splitted fv solver into different files: solver.hpp, tags.hpp, and
    container.hpp.
  - moved physics classes into subdirectories,
  - moved tests into tests/ subdirectories.
  - splitted physics classes into different files: tags.hpp, quantitites.hpp,
    boundary_conditions.hpp, initial_conditions.hpp, coupling_conditions.hpp,
    indicies.hpp, and physics.hpp.
- Refactored CMakeLists.txt files hierarchy: now each file describes its
  subdirectory only and includes other subdirectories that are max a level
  deeper in the directory tree.
- CartesianHSP now inherits from HSP, fixes #14.

Physics:
- added misc/units.hpp for dimensional analysis (uses Boost.Units).
- added quantity classes to the FV physic classes.
  - moved computation of conservative and primitive variables to the quantity
    classes.
- improved the documentation of the physics classes.
- added noexcept qualifier to the physics classes: wip #32.
- added a physics class for the Navier-Stokes equations: fixes #6
  - the gradient computation still needs some cleanup. It would be nice to at
  least have some generic way of computing derivatives using some chain-rule
  helpers: adds issue #50 #42.

Physics coupling:
- moved coupling conditions to physics_name/coupling_conditions.hpp files.
- simplified coupling conditions.
- added a cns-heat-coupling test that simulates the flow past a heat-conducting
  cube.
- added functionality to coupling for handling multiple solvers (initialization,
solution diverged, writing output...).
- added apply function to solver coupling that
  - couples two generic solvers,
  - couples a heat equation solver with a navier-stokes solver.

Drivers:
- added solver/fv/utilities.hpp with helpers for creating fv applications and
a single physics fv run loop

Misc:
- added misc/returns.hpp RETURNS macro for automatic return type deduction,
  wip #8.
- renamed `math::apprx` to `math::approx`, fixes #23.
- allow including files using relative path from src/, wip #5.

Bugfixes:
- bugfix: the time-step of the Euler equations is now computed correctly (the
  maximum time-step per cell-direction was being chosen instead of the minimum
  one).
- improved memory::stack::allocator error messages.
- bug-fix: const_reference is now a reference to const Scalar value for Eigen
  matrices

Fixed issues:
- write_domain takes its domain (grid/solver) by reference: fixes #49.