Move internal-link resolution into DocumentSlotView; wire Zen
Link-target resolution (relative-path join + building an OpenDocRequest) lived
in the tiling workspace, so each workspace would have to reimplement it. Move it
into a shared, pure resolveDocumentLink() and have DocumentSlotView — which
already holds the open doc's path and provider — translate a workspace's
onOpenEntry into the editor's onOpenLink handler.
Now any workspace gets file-to-file link navigation by forwarding the
onOpenEntry it already receives: Zen becomes a two-line change, and tiling drops
its bespoke handleOpenLink plus the onOpenLink prop threading.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>