[cmake] add ordering to subdirectory list
[VTK] Automatically deduce function type for factory-based adding of custom gridfunctions

The OutputCollector returned from addSolutionToVTKWriter() supports
adding additional cell and vertex functions to the writer using a
factory-based approach. This patch changes those methods to use decltype
for deducing the exact type of the generated function and removes the
need for a custom typedef-based protocol between the OutputCollector and
the factory.
[VTK] Additional, simplified interface for adding custom VTK output functions to a VTKWriter
[StationaryLinearProblemSolver] Add flag that allows reuse of the matrix

When repeatedly solving the same problem for different right hand sides,
StationaryLinearProblemSolver shouldn't reassemble the matrix each
time.

This patch adds a flag to the class that makes it possible to switch to
this behavior.
[ISTL] Fix Dirichlet constraints application for nested BCRS matrices

When using nested BCRS matrices in multidomain to implemented coupling
schemes like Neumann-Dirichlet, applying Dirichlet constraints to the
matrix fails if the associated diagonal block is missing (because it
belongs to the subproblem we are not interested in right now). In that
case, attempting to write a 1 on the diagonal raises an exception.

This patch fixes the problem by adding a new helper method
istl::write_matrix_element_if_exists(), which makes sure that the block
exists before traversing into it. This new method is used by the matrix
wrapper when setting Dirichlet constraints.
[ISTL] Fix nested pattern generation for the new BCRS matrix backend

This patch fixes the creation of nested patterns (for nested BCRS
matrices).