Cache semantic analysis of doc comments and skip in stop blocks
Two optimizations to Doc_attr.attached:
1. Skip entirely when skip_doc_parsing is true (inside a stop block).
Returns empty docs immediately, avoiding both parsing and semantic
analysis for items that will never render.
2. Cache the full ast_to_comment result by raw doc text. The semantic
analysis (code block trimming, tag processing) was running for all
150K doc comment instances even though the parse AST was cached.
With 33 unique texts, this eliminates 99.98% of semantic processing.
Together: read_impl drops from 3.77s to 3.70s on Container_intf.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>