Improved participation validity checking
This commit fixes a problem in participation validity checking that could lead to wrong results.
Summary of the changes:
- Use java.time.LocalDate in place of java.util.Date in entity classes
- Change boundary checks so that a memership is consider valid for the whole period described by the start and end dates
- Add unit tests checking the membership check logic