* Store jsonbin sidecar paths relative to JSON output
Keep --jsonbin sidecar files written next to the JSON output file, but record
their filenames relative to the JSON file directory. This makes generated JSON
and its sidecar directories relocatable as a unit and avoids embedding the
benchmark process working-directory relationship into the JSON payload.
Add a focused json_printer test that verifies sample-time and sample-frequency
sidecars are written beside the JSON file while summary filename fields contain
JSON-relative paths.
* Factor out jsonbin sidecar writing helper
Extract the duplicated sample-times and sample-frequencies jsonbin
sidecar write paths into a shared helper. This keeps directory creation,
file writing, warning logging, summary metadata, and write-duration
logging in one place for both sidecar types.
* Test jsonbin sidecar write failure handling
Cover the case where the expected sidecar directory path collides with a
regular file. Verify that json_printer keeps descriptive summary metadata
but omits filename and size when the sidecar file was not written.
Register printer and verify output.
* Clean up jsonbin sidecar logging
Factor repeated optional benchmark-printer logging in write_jsonbin_sidecar
into a local helper used by both warning and success paths.
Also tidy the jsonbin summary names for sample time and frequency sidecar
files.