course and enrolment models

this depends on #19

1. new course model

2. course user relation model: enrolment
yes, but this is the difference between functional and imperative language design.

tests should be functional, ie does not depend on state. while `before` will run before your test, you're depending on the state of an existing `course`, which is state. this state might not always be true, yielding bugs that are impossible to track down.