processOwnerDetector calls os/user.Current(), which fails in non-cgo
builds when the running UID has no /etc/passwd entry and $USER is unset
(common on hardened/distroless containers). It returns a plain error,
not ErrPartialResource, so the previous gate let the error escape and
SetupSDK aborted process startup.
Resource detection is documented as best-effort; downgrade any detector
error to a warning and fall back to an empty resource if the SDK returns
nil. The signature is preserved.
Factor the resource detector list into internal/otlpresource so
the logger's OTLP provider and the trace provider describe the
same process with the same attributes.
OTLP log records now carry the full resource (process.pid,
service.name, service.version, host.*, os.*, etc.) instead of
no resource attributes at all.