add caching for the quizzes#index api endpoint

fixes CNVS-13647

test plan:
  - make a GET request to the /api/v1/courses/{courseId}/quizzes endpoint
  - the first request will take a couple seconds
  - subsequent requests should be about 8x-10x as fast (around 200-250ms range)
  - try this out with different per_page options such as
    - api/v1/courses/1/quizzes?per_page=50
  - once again it will be slow the first request, but then all subsequent
    requests are faster

  - we want to make sure that changes are reflected correctly in the results.
    cache is invalidated if things change in the quizzes, and a good indication
    that the cache was invalidated was that we get that slow initial request
    again
  - things we should check to make sure they invalidate the cache (to make sure
    we don't see stale versions of things in the cached quiz results)
    - if the course id changes, we should get different results
    - if we edit details on a quiz
    - if we add a quiz
    - if we delete a quiz
    - if we send a jsonapi style request vs a non-jsonapi style request
    - if we add a search term to the params
      - api/v1/courses/1/quizzes?search_term=title
    - if we get a different page of the quiz results
      - api/v1/courses/1/quizzes?page=2
    - if we change the per_page value for returning quiz results
      - api/v1/courses/1/quizzes?per_page=50
    - if we visit the quiz results as a different user

  - make sure results for students and teachers are different and respect
    the correct permissions

Change-Id: I26f76ff9ace99ac168d3dd7a0cdaeb8550c8e655
Reviewed-on: https://gerrit.instructure.com/36596
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Reviewed-by: Josh Simpson <jsimpson@instructure.com>
Product-Review: Derek DeVries <ddevries@instructure.com>