Drop our attempts to cache ferny and systemd_ctypes — it's just not
worth it. Both of them are tiny.
Instead, establish that we expect submodules in modules/ to be checked
out, generally. Add a (trivial) script to do that and call it from a
bunch of "entry point" type places.
Note: we don't dist modules/checkout, and even if we did, it wouldn't
work, since it needs to be run in a git checkout. We therefore also
carefully avoid adding calls to this script from anything that lands in
the tarball.
This will give us some confidence in fixes and near-future changes until
we get this working well enough for the integration tests. Thus, install
the test dependencies on the fly, they are rather stable.
This just checks some very basic things, but it is enough to detect all
syntactic issues (such as type annotations, walruses, etc.) and some
missing APIs.