Convert ctx from an ABC to a mypystub
Required a bunch of renaming from ctx.Ctx to ctx.Context (its real name)
Makes the docs actually show docstrings
Also apparently mypy doesn't like "from typing_extensions import Protocol" and the fact that it didn't complain so far means that we're probably not type checking everything.