process: correct error in emails w/o In-Reply-To
process: strip() In-Reply-To headers
Fix search for user mailing list listing
Handle search errors
Refactor search to work with new core search code
patches.py: check if patch number is int

Previously, the patchset (patches/<number>) endpoint would return a 500
(sqlalchemy.exc.DataError) if the patch number wasn't actually a number.
This patch requires the patchset_id to be an int.
Fixes https://todo.sr.ht/~sircmpwn/lists.sr.ht/131

Signed-off-by: Benjamin Lowry <ben@ben.gmbh>
process: strip message IDs of whitespace

See discussion on sr.ht-discuss: per RFC 5322, whitespace is permitted
in these headers and needs to be stripped before interpreting the
Message-ID. This was breaking threading for some MUAs.
Improve accessibility of patch review pages
listssrht-lmtp: fix fallback address for . lists
patches.py: fix generated cover letter locals
Upgrade to Alpine 3.11
Improve config.example.ini
Adds pygit2 as a dependency in setup.py

pygit2 was being used in /listssrht/types/email.py, but it was never
declared as a dependency of the module.
Generate Next -> links with more patch context

Fixes #134
Improve patchset feedback rendering

To be honest, this code is a mess and will have to be completely
overhauled at some point.
Updates for single-sign-on support
Don't let lists.sr.ht email itself
listssrht-lmtp: more logging
Filter "normal" access from settings-access.html