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.
But is that the only vector? Do we have celery workers, management commands, etc. that might give bad data? At the end of the day, the model is responsible for data integrity.