course progress api

fixes CNVS-11526

test plan:
* set up a course with modules, module items
** and module completion requirements
* on each module, check the box that says:
** "students must move through requirements in
**  this module in sequential order"
* enroll a user in the course
* with that user's ACCESS-TOKEN, perform:

curl -H "Authorization: Bearer <ACCESS-TOKEN>" \
         -X GET -F 'include[]=course_progress' \
         <canvas>/api/v1/courses

* verify that in the response for all the courses
** for that user, there is a "course_progress"
** object.
* verify that the "requirement_count" is the
** total number of requirements for all the modules
** combined.
* verify that the "requirement_completed_count" is
** the number of requirements completed by this user.
* verify that the "next_requirement_url" is the url
** to the module item for the next requirement the
** user needs to complete for the course
* verify that the "next_requirement_url" is null
** if the user has completed all the course's
** requirements
* verify that "course_progress" returns an error message
** if the course is not module based (has no modules)

example:
"course_progress": {
  "requirement_count": 23,
  "requirement_completed_count": 1,
  "next_requirement_url":
    "http://localhost/courses/23/modules/items/31"
}

in this example, there are 23 total requirements for
the course. the current user has completed 1. the
"next_requirement_url" is a link to the next module
item in the sequence that still does not have its
requirement(s) completed by the current user.

Change-Id: I05897a263ea68a72c1583a9e5c19e32b685ec037
Reviewed-on: https://gerrit.instructure.com/31616
Reviewed-by: Jon Jensen <jon@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
QA-Review: Matt Fairbourn <mfairbourn@instructure.com>
Product-Review: Marc LeGendre <marc@instructure.com>