api for quiz settings

Fixes #CNVS-2948

Notes:
* Previously the quiz API was very simplistic, just supporting
  a generic index action
* This commit currently contains new endpoints for quizzes#show,
  create, & update, plus docs
* Also validating attribute values in create and update endpoints.

Test Plan:
* Test the new Quiz API endpoints to edit quiz settings:
  * GET  /api/v1/courses/:course_id/quizzes/:id  (show)
  * POST /api/v1/courses/:course_id/quizzes      (create)
  * PUT  /api/v1/courses/:course_id/quizzes/:id  (update)

Change-Id: I762ea2ffd8f5f0ee263381f1ba5be05c54c54e40
Reviewed-on: https://gerrit.instructure.com/16853
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Myller de Araujo <myller@instructure.com>
add index on conversation_messages(author_id)

so that user merges don't kill the db

test plan:
 * merges of users with lots of conversations should be faster

Change-Id: I4cc8f9cc081f205639999c8486e9604d23bc0ff5
Reviewed-on: https://gerrit.instructure.com/17167
Reviewed-by: Jon Jensen <jon@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Clare Hetherington <clare@instructure.com>
fix an intermittent calendar events api spec failure

fixes #CNVS-3326 - the order of the events was not well defined
since they had the same start and end dates.

Change-Id: If3398c4acda49d03440b31b7f55c285f84c58949
Reviewed-on: https://gerrit.instructure.com/17112
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Zach Pendleton <zachp@instructure.com>
QA-Review: Bryan Madsen <bryan@instructure.com>
add date parser helper for account reports

refs PS-29

test plan
 * pass this helper a date
 * the date should be formatted to pass into a query

Change-Id: Ib1183d268973f0830e4eeb5c2bf7ea714d4fa49a
Reviewed-on: https://gerrit.instructure.com/17192
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Brad Humphrey <brad@instructure.com>
QA-Review: Brad Humphrey <brad@instructure.com>
show warning in gb2 for invalid assignment groups

refs CNVS-1924

Test plan:
  * set up an assignment group that has assignments with 0 points
    possible
  * make sure you see warning icons in the assignment headers and the
    final grade columns
  * there should also be some helpful hover messages

Change-Id: Iad9e1323ba20008cf77687b12dbb18c5bfbba83a
Reviewed-on: https://gerrit.instructure.com/17023
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Myller de Araujo <myller@instructure.com>
expand recent activity in .links fixes #3275

test plan:
1. on the dashboard, click the whitespace next to
   the course links in the header
   - it should expand

Change-Id: Ie3cfeeb1c40217b5d92755421d54c1fc1265865b
Reviewed-on: https://gerrit.instructure.com/17104
Reviewed-by: Joe Tanner <joe@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Cam Theriault <cam@instructure.com>
remove .

Change-Id: Iad4444b6ba125a4fcd0e26226a8c0941bf58730c
Reviewed-on: https://gerrit.instructure.com/17103
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Ryan Florence <ryanf@instructure.com>
QA-Review: Ryan Florence <ryanf@instructure.com>
switch JSON back-ends

closes CNVS-3410

test plan:
* parsing and emitting json should still work as before -- the API is a
  great way to verify this. Also just using canvas pages that make AJAX
  calls back to the server.

Change-Id: I30ac2aa6b88c51927dbf71067766db0de02b0c45
Reviewed-on: https://gerrit.instructure.com/17206
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Brian Palmer <brianp@instructure.com>
Tested-by: Brian Palmer <brianp@instructure.com>
spec: external_tools url xml serving locally

Change-Id: I80765a02c86984b1b2effe5bb9450cc99532f6dc
Reviewed-on: https://gerrit.instructure.com/17016
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jake Sorce <jake@instructure.com>
QA-Review: Jake Sorce <jake@instructure.com>