Remove types.ast, and all references to it.

It's obsolete, was part of the Annotations extension.
Have ReachingDefs handle parameters and globals.

Previously, ReachingDefs treated only AssignStmts as defs,
and included only singleton sentinel values for globals
and parameters (ReachingDefs.GLOBAL, ReachingDefs.PARAM).
This isn't very useful in the context of e.g. a def-use chain,
if you want to compute all the uses of a function parameter.

This commit add a marker interface Def, which is now implemented
by AssignStmt, GlobalStmt, and Name (for function parameters),
and ReachingDefs propagates sets of Defs instead of AssignStmts.
All call sites have been changed to work with Defs instead of
AssignStmts.
Handle renaming of function parameters.
Remove extraneous whitespace in pretty-printing.

Also change some tests which relied on the pretty-printing layout.
Handle renaming of global variables.
Add ReachingDefsTest to AllTests