Will/grady/self assessment feedback

@wedaly , we should talk about the Test changes and the changes to models/base.py
This makes sense.  Please verify that there are unit tests for all combinations of True/False for:
* has-an-option-selected(X), 
* has-zero-options(X),
* has-criterion-feedback(X)

(Should be 8 tests)