Unify ldu/Ldu wrapper
Currently the ldu and Ldu matrix wrapper contains a lot of duplicated code to implement common functionality. To improve maintainability and testability this should be avoided by using templates and refactor data members independent of template arguments to separate classes. This should also improve the structure of the project such that every implemented solver resides in a separate folder in the project root. Ideally, the support for different OpenFOAM matrices is realised either with mixins or via a template parameter.