course and enrolment models

this depends on #19

1. new course model

2. course user relation model: enrolment
then in that case it should be a state machine:

 - closed: no one can see except course owner
 - published: everyone can see but cannot join
 - opened: everyone can see and can join