fix: resolve strongRef refs in nested object types
Implement 3-phase object type building to properly resolve cross-lexicon
refs in nested object types:
1. First: Main-level object types that have NO local #fragment refs
(like com.atproto.repo.strongRef - pure dependency types)
2. Second: All #fragment refs, which may reference main-level types
3. Third: Main-level types that DO reference their own #fragment refs
(like app.bsky.richtext.facet which refs #mention, #link)
Previously, #replyRef.parent would resolve to String because strongRef
wasn't built yet when processing #fragment types. Now it correctly
resolves to ComAtprotoRepoStrongRef because main-level object types
without local fragments are built first.