Various fixes to lottery script, mostly to do with multiple priority levels.

* Sections will now be filled from longest to shortest (which was
  previously the case according to a comment but not in reality), and
  rerandomized for each priority level.
* The code that imports preferences will not import any preferences
  corresponding to non-accepted sections.  If it somehow otherwise
  imports preferences for sections it doesn't know about, it will error.
* The code deals more carefully with which things should apply to all
  priority levels (including possibly the one for grade range
  exceptions), and which things should be done only on "real" priority
  levels.
* The error message when classes are full is now correct.
* The try/except for importing preferences is now an actual
  QuerySet.exists() check.
* A test was added for running the lottery with multiple priority
  levels.
Merge branch 'markdown' into mit-prod
Merge branch 'markdown' into mit-prod
Merge branch 'main' into mit-prod
Merge branch 'main' into mit-prod
Merge branch 'class-flags' into mit-prod

Discussion in #901, I want this for the worksession.
Merge branch 'class-flags' into mit-prod
Merge branch 'edit-walkins-fix' into mit-prod
fixes #962 - tooltip in theme_compile.css sets the opacity to 0, causing the link text to disappear. I am not certain if that opacity setting is important elsewhere, in the meantime, simply removing the class reference solves this specific problem
Merge branch 'main' into main_jlegris
Add comm panel grade filter to changelog
Initial commit of (existing) program modules docs
Add documentation for management modules
Add documentation for student program modules
Add documentation for teacher program modules
Add documentation for onsite/volunteer modules

Also corrects the counts for each module category.
We have a lot of modules.
Makes QSD does not exist 404 properly.

In the past, the "this page does not exist, would you like to create
it?" page for admins was returning as 200, meaning that if there was a
redirect away from a (nonexistent) QSD page, but you had the ability to
create it, the redirect would be ignored.  Now it will 404, still
returning the same message, so that the redirect middleware can catch
the 404 and return the redirect.
Merge branch 'main' into qsd-redirect-fix
Adds tests for QSD status codes.

In particular, adds tests as a logged in user, both admin and non-admin.
Merge branch 'main' into mit-prod