Name resolution and symbol table for the Assura contract language.
The resolver walks the parsed AST, collects all declarations into a
SymbolTable, detects duplicate names (A02003), registers built-in
types, resolves import declarations, and checks type references
(A02001 for unknown types). Full expression-level name resolution
(ambiguous imports) are deferred to later tasks.