Add interface for specifying lottery pairs

Allow participants to select themselves as being part of a pair. This
selection must be reciprocated (guards against accidental, malicious, or
otherwise unwanted pairing).

For now, this has no effect on the lottery algorithm itself.
Correct site domain

Domain shouldn't be the path to the root of the site, but the domain its
hosted on. This fixes some allauth messages.
Don't mandate lecture attendance for lottery

It's up to the WIMP and trip leaders to ensure lecture attendance. If we
trust the lottery algorithm to ignore people who haven't attended, we
may accidentally exclude some people who attended but weren't marked as
such.
Add support for pairs in the lottery algorithm

Rework participant handling into class-based system (function was
getting too unwieldy).
Change lottery times

Lottery should be run between 6 am and noon on Wednesday. If it's run
after noon on Wednesday, signups will still be set to open at noon on
that day (not noon of the next Wednesday, as previous behavior
dictated).
Add migrations for new couples feature

Because production-ready version was deployed before the paired lottery
signups feature, we'll need to perform the first migration. The
"initial" migration file is the database before this change, and
migration 0002 is what's needed to accomodate the new feature.

Because we removed `wed_at_noon` from `dateutils`, the initial migration
file sets the default signup opening time to the next `wed_morning`.
However, since the default for this field is a Python function (and thus
will not set a DEFAULT value in the MySQL schema), this is not a problem.