course progress API fixes (CNVS-12156, CNVS-12157)

Fixes CNVS-12156

Problem:
  Removing a module item (ContentTag) should update the completion
  requirements on its ContextModule. This is not directly related
  to the course progress API, but rather a separate bug deeper
  in the code that is affecting the API response.

Test plan:
  1. Add an assignment to a module, and set completion requirements
     on the module.
  2. Assert that the completion requirements are set:
       ContextModule.find_by_name('Module name').completion_requirements
  3. Remove the assignment from the module through the UI.
  4. Assert that the completion requirements no longer reference the
     old assignment:
       ContextModule.find_by_name('Module name').completion_requirements

Fixes CNVS-12157

Problem:
  Obsolete completion requirements were tripping up the progress API
  response. For instance, turning in an assignment that used to be a
  requirement but no longer is would have an impact on the
  requirement_completed_count, sometimes causing it to be larger
  than requirement_count, leading to completion percentages greater
  than 100.

Test plan:
  1. As a student, complete a required assignment on a module.
  2. Using your favorite LTI tool that uses the progress API (e.g. Catalog),
     check the course completion percentage.
  3. As an admin, remove the completion requirement for that assignment.
  4. Check the course completion percentage again and verify that it has
     decreased.

Change-Id: I80a932657eada20717ca2e0df7b57a005a5b276a
Reviewed-on: https://gerrit.instructure.com/32698
Tested-by: Jenkins <jenkins@instructure.com>
Reviewed-by: Jon Jensen <jon@instructure.com>
Product-Review: Marc LeGendre <marc@instructure.com>
QA-Review: Marc LeGendre <marc@instructure.com>
Reviewed-by: Jeremy Stanley <jeremy@instructure.com>