Refactor CourseSerivce
Currently the [CourseService](https://gitlab.ewi.tudelft.nl/eip/labrador/queue/blob/development/src%2Fmain%2Fjava%2Fnl%2Ftudelft%2Fewi%2Fqueue%2Fservice%2FCourseService.java) class has a few issues.
1. The method [findUser](https://gitlab.ewi.tudelft.nl/eip/labrador/queue/blob/development/src%2Fmain%2Fjava%2Fnl%2Ftudelft%2Fewi%2Fqueue%2Fservice%2FCourseService.java#L133) tries finding a user, else it creates a user.
Methods called `find` should not change state in the database only read it. Hence we should rename it `findOrCreateUser` to make this explicit.
2. This [snippet](https://gitlab.ewi.tudelft.nl/eip/labrador/queue/blob/development/src%2Fmain%2Fjava%2Fnl%2Ftudelft%2Fewi%2Fqueue%2Fservice%2FCourseService.java#L112):
```java
Role role = null;
switch (csvUser.getRole()) {
case ROLE_ASSISTANT:
role = new Assistant(staff, course);
break;
case ROLE_TEACHER:
role = new Teacher(staff, course);
break;
case ROLE_MANAGER:
role = new Manager(staff, course);
break;
default:
throw new IllegalStateException("Unexpected value: " + csvUser.getRole());
}
```
Should become a method on `CsvUserHelper` and could be unit tested there.
3. This [save](https://gitlab.ewi.tudelft.nl/eip/labrador/queue/blob/development/src%2Fmain%2Fjava%2Fnl%2Ftudelft%2Fewi%2Fqueue%2Fservice%2FCourseService.java#L108) seems redundant since staff will be saved at the end of the method regardless.
4. All the repository fields can be marked final, if we create a constructor assigning them and mark that constructor as `@Autowired` instead of the individual fields.
issue