generate: Run each section generator asynchronously

We can use a threaded pool executor to run each section generator in a
separate thread, and then collect all results at the end.
2 jobs for async-generate in 1 minute and 36 seconds (queued for 2 seconds)
Status Job ID Name Coverage
  Check
passed #1167388
flake8

00:01:24

failed #1167389
allowed to fail
mypy

00:01:36

 
Name Stage Failure
failed
mypy Check
gidocgen/gir/parser.py:813: error: Argument "gtype" to "Boxed" has incompatible type "Optional[GType]"; expected "GType"
gidocgen/gir/parser.py:831: error: Argument "get_type" to "GType" has incompatible type "Optional[str]"; expected "str"
gidocgen/gir/parser.py:873: error: Argument "get_type" to "GType" has incompatible type "Optional[str]"; expected "str"
gidocgen/gir/parser.py:895: error: Argument "name" to "Union" has incompatible type "Optional[str]"; expected "str"
gidocgen/gir/parser.py:895: error: Argument "symbol_prefix" to "Union" has incompatible type "Optional[str]"; expected "str"
gidocgen/gir/parser.py:895: error: Argument "ctype" to "Union" has incompatible type "Optional[str]"; expected "str"
Found 107 errors in 3 files (checked 14 source files)
Cleaning up file based variables
ERROR: Job failed: exit code 1