Contains a massive refactoring of requirement and binding extraction by
jgberry, which fixes a number of bugs. In particular:
- Fixes bindings not being discovered in return statements.
- Fixes bindings not being discovered in exception handler type expressions.
- Fixes dict not resolving requirements from its keys.
- Fixes augmented assignment not resolving requirements from its target.
- Fixes annotated assignment not resolving requirements from its annotations.
- Fixes functions and lambdas not resolving requirements from their arguments and annotations.
- Fixes with statement not resolving requirements from its optional_vars.
Fixes for statement not resolving requirements from its target.
In addition, enables walrus tests for Python 3.8 and introduces a new
API for hooking in to error reporting.