Add Criteria API

Can now retrieve a courses' criteria. Criteria is used as a "category"
for student judgements of answers. For each pair of answers, students
will submit 1 judgement per criterion. E.g.: A criteria might ask a
student to evaluate which answer has better grammar while another might
ask which answer was more accurate.
Judgement page now implemented.

Students can now be given 2 pairs of answers and asked which one is better.

Works with multi-criteria setups, though current courses only has 1
criteria.

On the UI side, instead of "Judgement", using the softer word "Evaluate"
as suggested by Ido.

Note that answer pairs are currently generated on the fly. I'm not sure
if there is a sufficient performance penalty to warrant working out the
complexity required to pre-generated answer pairs. The database was
originally designed for pre-generated answer pairs, but seems to work
fine with on-the-fly generations anyway.

Answer pairs are made with 2 simple rules:
- Answers with the same number of times judged are grouped together.
- We randomly pick among the answers that has the lowest number of times
  judged.

Currently, users can make as many evaluations as they want until they've
evaluated every single answer at least once.

The vast majority of the bulk of save judgement was caused by the heavy
validation requirements. I'm not sure if the explicit validation is
required since some of our automated validation already handles some of
it.

Tests will be coming in another commit, as I see it being potentially
even more bulky than this commit. There's probably a ton of bugs...

I'm not sure where to take the user once the judgement has been
completed. Right now, it'll just redirect them back to the course
question listing, but we might want to change that if there's a required
number of judgements they need to make.
Massive cleanup of old code.
Add example API module.