Package surveyor is the discovery framework: plugins that inspect an environment
and return Saga fragments, which are merged so the descriptor can write itself.
Apply merges a fragment into an existing model, upserting components by name.
Delegates to saga.Merge so a surveyor's fragment and a `fragments:` entry go through one
merge. Two merges would eventually disagree about what a repeated component name means.
MergeFragments combines fragments into one, deduplicating components by name and
unioning each component's surface (repositories, images, hosts, infrastructure).
Run executes each request in order and merges the resulting fragments. Errors (unknown
surveyor, survey failure) are collected and returned alongside whatever was discovered.