Feedback-only criteria

Feedback-only criteria: [TIM-468](https://edx-wiki.atlassian.net/browse/TIM-468)

* Per-criterion feedback can now be required (in addition to disabled/optional)
* Criteria can be configured to have no options, only written feedback.
* Refactor of rubric model queries.

Unfortunately, this includes database schema and data migrations:
*  `AssessmentPart.option` is nullable
* `AssessmentPart.criterion` added; existing rubrics need a data migration to populate this field.

Some folks who should take a look at this:

* @mulby: This includes some changes to the emitted events for creating a self- or peer-assessment.
* @srpearce: There are a few new validation messages that will be visible to course authors.
* @ormsbee: I've done a pretty significant refactor of the assessment models to (a) move assessment creation logic into the models as class methods, and (b) introduce a `RubricIndex` helper class in place of `Rubric.options_ids`.  If you have a moment to look over this, I'd like to get your thoughts.

Still to do:
* Integration tests for grade complete.
* Jasmine tests for the enable/disable logic.
* Cross-browser testing in a sandbox.
* Perf testing.
I agree about the testing, but I think these changes will be safe, since we're adding a new field.  The only failure mode I can see is:
1) We run the migrations, making `option` nullable.
2) Someone creates a new problem with a criterion that has 0 options.
3) We roll back the code.

This would break the newly created problem, but existing problems should still work (because they'll have options for all criteria).  If we get this in a few weeks before courses will start using it, we should be safe.