BoundaryConditions is now a template on PhaseType
bugfix: a real PhaseType can now have open boundary conditions
refactor the template names to be [Real|Complex]PhaseType and use it everywhere instead of complex_t