core,just: Skip hardware-gated tests cleanly with visible warnings
The hardware-gated tests were panicking when their prerequisite (a
plugged-in camera, or a PAREIDOLIA_TEST_* env var pointing at a model
file) was missing. That made sense as a 'you ran this wrong' assertion
when the only invocation path was explicit `just test-hardware` from
inside `nix develop` with hardware present — but it falls over the
moment any of those conditions slip.
Concrete case: a USB unplug or driver hiccup leaves /dev/video* gone,
and `just test-hardware` fails noisily even though the other hardware
tests (model-loading, inference) would have run fine. The panic also
wrongly suggests something's broken when in fact the test simply lacks
its physical prerequisite.
Replace each panic with an `eprintln!` describing what's missing and
how to set it up, then early-return. Nextest treats the early return
as a pass — conventional behaviour for hardware tests in the Rust
ecosystem — and the suite stays green when hardware is temporarily
absent.
The eprintln output is captured by nextest's default profile, so the
skip messages would be invisible unless tests failed. `test-hardware`
now passes `--no-capture` so each test's stderr streams through in
real time, and each skip message is prefixed `warning:` so it stands
out.
While I was in there: the per-camera capture test was tolerantly
`continue`-ing on individual open errors but then *succeeding* even
when every camera failed, defeating the point of the test (saw this
when the BRIO firmware wedged into an EIO state after a previous run).
It now asserts at least one capture succeeded among the enumerated
devices, and inserts a 500ms cooldown between iterations because UVC
cameras commonly EIO on rapid open-close-open cycles.