Refactors teacher check-in

This will make it easier to add more class info to the teacher check-in page,
and maybe improve performance.  (The performance still isn't great until we
improve resources and user profiles; so it goes.)
Adds class flags to teacher check-in

Resolves #489, resolves #499, resolves #1240.
Adds more class detail to teacher check-in.
Hides class flags stuff on teacher check-in if the module isn't enabled.
Merge branch 'class-flags' into teacher-check-in
Merge branch 'main' into teacher-check-in
Adds phone numbers back to teacher checkin page

833b201b introduced a regression on the teacher checkin page,
accidentally removing the phone numbers of missing teachers. This is
because phone numbers were being set by iterating over
ClassSection.teachers and setting a field on those ESPUser objects. This
doesn't work because `teachers` in this context is a property, so the
assignments of phone numbers were quickly lost.

This is fixed by creating a list of teachers and then modifying that. It
is this list which is now iterated over in the template.

This commit also:
- Adds test_phone_numbers_on_checkin_page() to catch this regression.
- To support this test, adds ProgramFrameworkTest.add_user_profiles() to
  create teacher profiles with phone numbers.
- Provides default text for when the teacher has no contact info, or for
  when the teacher has no provided phone number.
Adds param documentation
Merge pull request #1276 from learning-unlimited/teacher-check-in

Merge branch 'teacher-check-in' into main

Teacher check in improvements