Expand the activity analysis to composite names.
Fix a bug in the cond template that caused bad syntax when there it no symbol that needs aliasing.
More refactoring in the process, including:
* introduce the QN (qualified name) class to hold symbol information; it has value semantics and can generate the original symbol, a corresponding AST tree or a single-symbol form (e.g. "a.b" -> a_b)
* allow the template mechanism to use QNs for substitutions
* annotate *all* symbol nodes with their corresponding QN object; this is done as first step during static analysis, and automatically performed on all template expansions
* start using typed annotation keys (Enum values) instead of plain strings
* rename access.py to activity.py
* sanitize nodes in template expansion by deep copying the AST without annotations, to avoid common references
PiperOrigin-RevId:
184528586