course and enrolment models

this depends on #19

1. new course model

2. course user relation model: enrolment
new course or new courses?

actually `describe` and `context` is the same thing. I lean towards `describe` for things and `context` for states.

 > context blocks should pretty much always have an opposite negative case. It should actually be a strong code smell if there is a single context (without a matching negative case) that it needs refactoring, or may have no purpose.

Not something I totally agree with in the rspec style guide. New objects _are_ states, and there isn't a negative _new_ state.

This is also another philosophical discussion about 'should' and 'should not' in `it` statements. Not having 'should' makes sense, but then how do we describe negative behaviour?

@jsyeo @weiqingtoh opinions?