cleanup boundary conditions
This MR attempts to simplify the boundary condition interface by providing:
- an abstract interface
- more documentation
- clearer function names
- deduction for some template arguments
The introduction of virtual functions requires additional template arguments Mat, Sol, Rhs. Those may be removed later with the change to local application of constraints.
Edited by Müller, Felix