Sanchez/fix duplicate assessments

Adds in the initial client side JS fix to avoid duplicate calls to get peer submissions, but also secures the client side code to avoid retrieving duplicate peer workflow items when an assessment has been made against the associated submission.

This does mean that, if a duplicate does get created, a soft lock will be created on the associated submission until the duplicate has expired. With client side changes this should be much less frequent. 

@wedaly @gradyward 
I don't think we'd need nested SQL: why not just query for `workflow.graded.all()`, then programmatically filter based on whether `assessment` is null and the date?