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.
You might want to consider making the constructor take something other than a model (and having a classmethod that takes a model and calls `RubricIndex()` based on that information). RubricIndex seems like something that would benefit from being easily pulled out of memcached.