add api for quiz submission extensions

quiz submissions can have their time limit or number of attempts extended.
we can extend both existing quiz submissions, and also those that don't exist
yet. adding this functionality to the existing quiz submissions api would
muddle up responsibilities. So instead we post all extensions to a the
quiz extensions api which is specifically meant for adding extensions to a
submission whether it has been started yet or not.

Also add 'manually_unlocked' to the quiz submissions api. this field lets us
know if a student can take a quiz after it has been locked for everyone else.

fixes CNVS-13165

test plan
  - There is a new attribute added to quiz_submissions objects in the api
    called 'manually_unlocked'. This attribute will now show up when returning
    results back from
    - GET /api/v1/courses/:course_id/quizzes/:quiz_id/submissions (index)
    - GET /api/v1/courses/:course_id/quizzes/:quiz_id/submissions/:id (show)

  - There is a new endpoint to create quiz extensions. This should work to
    create quiz extensions for users that both have existing quiz submissions
    started, and users who have not yet started a quiz:
    - POST /api/v1/courses/:course_id/quizzes/:quiz_id/extensions (create)
  - Check Permissions on the new quiz extension endpoint. Only teachers should
    be able to extend the quizzes.
  - Check that all the documentation looks okay for quiz extensions.

Change-Id: Ie23113c1f30e139a1e376475fb35a2cf3ce0212c
Reviewed-on: https://gerrit.instructure.com/35111
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ahmad Amireh <ahmad@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Product-Review: Derek DeVries <ddevries@instructure.com>