hook into gitlab CI for linting, black, tests, and mypy

None of those trigger an error, and some of them (e.g. tests) are even
broken (at least locally).

black, in particular, has a bunch of changes, a lot around quotes, but
also flake8 errors like "too many blank lines".

flake8 also fails on those, and especially outline issues around a
nasty `import *` that we should generally avoid.

mypy is unhappy about missing stubs for the gitlab module, although
that module *should* have type hints:


.. so I'm not sure what's up with that.

In general, this aims towards the following policies:

 * flake8-clean, with an exception for <120 char lines
 * black-clean
 * unit tests that pass
 * mypy type annotations

We're failing on most of those, but it doesn't mean we shouldn't try
to catch future errors those tests could find.
4 jobs for ci in 4 minutes and 21 seconds (queued for 2 seconds)