generate_packets.py: variable annotations
Note that this is primarily about annotating instance variables (fields of objects). There might be a few places where local variables need type hints as well (specifically for element types of initially empty collections), but local variables don't need to, as a rule, be annotated when inference works fine.
Depends on #44767. generate_packets.py has a few FIXMEs for places where workarounds are used to help static type checkers infer correct variable types. With Python 3.6, such type hints should be made explicit via variable annotations, rather than inferred. For instance variables, these should (along with their docstrings) be put directly inside the class, not inside the constructor.