TSan builds emit many ThreadSanitizer reports, but in-tree these existed
only as raw process_output GECKO lines: they were never turned into a
structured log action and never appeared in the streamed resource usage
profile. This mirrors the LeakSanitizer work in bug 2035237.
Add a shared TSANErrorParser in mozlog that parses TSan reports (data
race, lock-order-inversion, SEGV, ...) into a new tsan_error
structured-log action, routed to the resource monitor (and rendered by
the formatters). Each report's labeled stacks become TSanError markers
in the resource usage profile; since a marker holds a single stack, one
marker is emitted per labeled stack, correlated by report_index. The
parser is fed from mochitest first, keyed by emitting process so
interleaved reports stay separate; the shared pieces are
harness-agnostic. Reporting only, no change to pass/fail behavior.
Differential Revision: https://phabricator.services.mozilla.com/D303351