Clean up open ended problems view and fix error.

Fixes a 500 error with the open ended problems view caused when a path to the given problem could not be found.  Also clean up text in open ended problems view per Stanford request.

Split out getting the problem list into a class for easier testing.  Add in various translations and update a lot of docstrings.  There are other cleanups to do in the LMS open ended problems view, but they are outside of the scope of the current PR, and I will save them for later.

@brianhw please review.  And maybe @jbau on the human names part -- lines 21-26 in open_ended_grading/utils.py.