Course progress API returns 500 on changed requirements

Fixes CNVS-12210

The course progress API currently works as follows:

- Fetch all the modules for this user
- Get a list of the completion requirements
- Cross-check the requirements against the last known
  list of requirements met
- If there are outstanding requirements, refresh progression
  data, and fetch the URL of the next item

The problem is that in that last step, we refresh the progression
data, which means that the dataset changes mid-method, and it can
cause unexpected behavior.

The solution is to refresh progression data as step 2, so that
the entire method is looking at the same information.

Test plan:
  1. As a teacher, add a couple of modules with completion requirements.
  2. As a student, complete the requirements.
  3. As the teacher, remove one of the modules, and add it again,
     with the same assignment and requirements.
  4. Verify that the Catalog dashboard loads without errors.

Change-Id: If021834d022661ef171167009b7eec79f3f37d83
Reviewed-on: https://gerrit.instructure.com/32870
Reviewed-by: Landon Wilkins <lwilkins@instructure.com>
Tested-by: Jenkins <jenkins@instructure.com>
Product-Review: Marc LeGendre <marc@instructure.com>
QA-Review: Marc LeGendre <marc@instructure.com>