## Use BCGS_AMG_SSOR solver for finite volume methods

### Description

We currently use the `AMG_4_DG`

solver in all cases. As its name suggests, the solver is optimized for solving DG problems by separating them into a CG and DG subspace. As finite volume spaces are essentially DG spaces of order zero, this solver works, but it likely performs many no-ops. Specifically, the CG subspace of the problem should be empty. We can therefore switch to a more direct solver.

### Proposal

Use the `BCGS_AMG_SSOR`

solver for the finite volume method. It uses the same overall routines as the `AMG_4_DG`

, which should ensure that the results remain comparable. It uses `AMG`

for preconditioning, `BiCGStab`

for solving the problem, and `SSOR`

for smoothing the solution.

The PDELab class is called `Dune::PDELab::ISTLBackend_BCGS_AMG_SSOR`

and defined in the `dune/pdelab/backend/istl/ovlpistlsolverbackend.hh`

header. The class must replace the other linear solver via a conditional type definition based on the polynomial order of the problem. Initialization of the solver object is also different and must be controlled via `if constexpr`

.

### How to test the implementation?

Test suite still succeeds.