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.
From a data integrity perspective, I think it's okay for an assessment to have written feedback even if, according to the problem definition, the criterion has feedback disabled.   This could happen, for instance, if the course author modifies the problem definition.

I'm thinking of the feedback configuration for a problem as part of the presentation layer.   If feedback is enabled, then it's the XBlock's responsibility to display it; otherwise, it should be hidden.