Added Assignment model, rspec tests

rspec tests added:
- when an assignment is past due date
- for `Assignment#criterion_class`
- some more Assignment attribute validations

I modified `Assignment#criterion_class` to make the following test pass:
```
Assignment
  #criterion_class
    when the marking_scheme_type is nil
      returns nil
```
You're right we are. This is in place to ensure that if a new `Assignment` is made without specifying a `marking_scheme_type` and then `Assignment#criterion_class` is called before validating (eg. before saving), then `nil` will be returned and not `RubricCriterion`. In case that's a bad explanation:

```
assign = Assignment.new(<marking_scheme_type not set here>)
assign.criterion_class
=> RubricCriterion