Compute a structural hash from a tree-sitter AST node.
Strips comments and normalizes whitespace so formatting-only changes
produce the same hash. Uses streaming xxHash64 to avoid intermediate
string allocations.
Compute a structural hash that excludes tokens within a given byte range.
Used to strip the entity name from the hash so that renames of otherwise
identical entities produce the same hash, enabling Phase 2 rename detection.