Assessment model refactor

* Refactor assessment base models to use RubricIndex for finding criteria and options.
* Consolidate logic for creating assessments and assessment parts in the models (reduces duplicate code in the API modules)

This is preparation work for [TIM-468](https://edx-wiki.atlassian.net/browse/TIM-468): A criterion can have no options, but just comment boxes.

This will require that we re-run a perf test before the next release.  The unit tests for query counts show that we're making slightly fewer queries than before, but I want to test the full system to verify.

@stephensanchez please review.