Quiz Submissions API - Update

This patch ports the ability for teachers to manually grade questions
and add comments on student answers in a quiz submission.

fixes CNVS-8981

TEST PLAN
---- ----

Create a quiz with like two questions, take it as a student and turn it
in.

Endpoint: [PUT]
/api/v1/courses/:course_id/quizzes/:quiz_id/submissions/:id

  1. Modify fudge points (Appendix A) with values like -2.5, 2.5 and:
    a. verify that the score gets adjusted by the fudge amount
    b. verify that the returned "fudge_points" in the output is adjusted
  2. Modify a question score (Appendix B) and:
    a. verify that the total score is adjusted by the correct amount
    b. verify that no other question scores were affected
    c. verify that no comments were affected
  3. Modify a question comment (Appendix C) and:
    a. verify that the total score is not affected
    b. verify that no comments were affected

Tip: to verify stuff like single question scores and comments, just go
to the quiz history page in the web UI and keep refreshing after
sending API requests.

Tip: to get a list of all the question ids, perform a GET request to:
  /api/v1/courses/:course_id/quizzes/:quiz_id/questions

Validations that should hold:

  1. [403] if you're not a teacher
  2. [400] if you specify an invalid attempt
  3. [400] if you specify an attempt that is in progress (not turned in)
  4. [400] if you pass in a funny score, like an array ([ 'hehe' ]) or a
     Hash ({ hello: 'World' })

EXAMPLE REQUESTS
------- --------

Appendix A: Modifying fudge points

{
  "quiz_submissions": [{
    "attempt": 1,
    "fudge_points": VALUE
  }]
}

Appendix B: Modifying a question score

{
  "quiz_submissions": [{
    "attempt": 1,
    "questions": {
      "QUESTION_ID": {
        "score": VALUE
      }
    }
  }]
}

Appendix C: Modifying a question comment

{
  "quiz_submissions": [{
    "attempt": 1,
    "questions": {
      "QUESTION_ID": {
        "comment": "HEHEHEHH"
      }
    }
  }]
}

Change-Id: Id290d4e9f9cb9abcaa00eae857f4b0b7bd06e2ff
Reviewed-on: https://gerrit.instructure.com/28268
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Myller de Araujo <myller@instructure.com>
Reviewed-by: Jason Madsen <jmadsen@instructure.com>
Product-Review: Ahmad Amireh <ahmad@instructure.com>