Dedupe the side-panel "Subclasses (in this program)" list
A single class can appear twice as a subclass of the same class
(e.g. `class (Foo a, Foo b) => Bar a b` produces two SuperclassEdges
with target Foo). The reverse-index push happens per-edge, which is
the right granularity for chain reasoning, but the side-panel list
was rendering each entry verbatim and so duplicated subclass names.
Add a per-render dedup set keyed on the subclass's qid so each
subclass shows up at most once.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>