Student profile CSV background task tech debt

TNL-525

These 4 commits address 4 fairly small instances of technical debt that @nasthagiri and I came across while working on the backgroundify student profile CSV story.

@jimabramson @nasthagiri please review.

@cahrens FYI
```
def upload_students_csv(_xmodule_instance_args, _entry_id, course_id, task_input, action_name):
    """
    For a given `course_id`, generate a CSV file containing profile
    information for all students that are enrolled, and store using a
    `ReportStore`.
    """
    num_total = CourseEnrollment.num_enrolled_in(course_id)
    start_time=time()
    _update_task_progress(
        action_name,
        start_time=start_time,
        num_total=num_total,
        curr_step='Calculating Profile Info'
    )

    # compute the student features table and format it
    query_features = task_input.get('features')
    student_data = enrolled_students_features(course_id, query_features)
    header, rows = format_dictlist(student_data, query_features)
    len_rows = len(rows)

    rows.insert(0, header)
    _update_task_progress(
        action_name,
        start_time,
        num_attempted=len_rows,
        num_succeeded=len_rows,
        num_skipped=num_total - len_rows,
        num_total=num_total,
        curr_step='Uploading CSV'
    )

    # Perform the upload
    upload_csv_to_report_store(rows, 'student_profile_info', course_id, start_date)

    return UPDATE_STATUS_SUCCEEDED
```