feat(asm): implement macro @ret wiring, parameterized qualifiers, and ${param} substitution
Enhancement 2: Parameterized placement, port, and context slot qualifiers
- Grammar: placement, port, ctx_slot accept param_ref
- IR: PlacementRef, PortRef, CtxSlotRef, CtxSlotRange wrapper types
- Lower: qualified_ref extracts typed qualifier refs; _normalize_port passes PortRef through
- Lower: _process_statements uses replace() instead of manual IRNode reconstruction
- Expand: resolves PlacementRef/PortRef/CtxSlotRef during substitution
Enhancement 3: @ret wiring for macros
- Grammar: macro_call_stmt accepts optional |> call_output_list
- IR: IRMacroCall gains output_dests field
- Lower: macro_call_stmt handler extracts output destinations
- Expand: rewrites @ret/@ret_name edges to concrete destinations after body expansion
- Expand: reports MACRO error for unmatched @ret or missing output wiring