crucible nwsync emit and assemble printed their summary line to stdout.
Callers that capture a script's stdout as a value got the summary glued
onto it: pack-haks.sh does release_dir="$(...)", so all 11 emit summaries
landed in $release_dir and publish-release.sh failed with "release dir
not found".
Neither line is a machine-readable contract, so move both to stderr,
where lib.sh's own "nwsync: emitted $key" log already goes. runEmit and
runAssemble no longer need the stdout writer.
Fixes#81.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>