Peer API Refactor

This is a preliminary step towards restructuring the assessment app, with the goal of making it easier to add additional assessment types.

When I started moving modules around, I got a bunch of test failures because the peer assessment tests were calling private functions in `peer_api`.  All of the private functions were associated with particular Django models, so I've made them public functions of those models.  This allows us to call them in the tests without breaking encapsulation boundaries.

Changes:
* Move peer assessment private methods into models.
* Move errors for assessment app into a module.

Question: Could we remove the queries with over-grading disabled, now that we're always leaving over-grading turned on?

@stephensanchez