Feature/bc user defined string
In this branch we have changed the boundary condition member UserDefined from being an enum to be a string. This then allowed most solver to add additional boundary conditions at the solver level and not to have to touch the library (to add a new enum to the list). We have also added a bool to the solver to identify that the boundary condition is time dependent. This however needs to be used with care since the default usage is to evaluate the string read in from the file. Currently the main usage is within PulseWaveSolver.