jsconsumer: add Run, a supervised consume loop
Commit

Start is one-shot: an error at consumer creation is returned, and a consume loop that closes underneath the caller (consumer deleted, subscription invalidated) stays closed. Both non-adopters built the same supervision on top — entiredb's natsx.PullConsumer recreates on Closed with exponential backoff and treats stream-not-found at boot as warn-and-retry, and mirror-pipeline's fanoutengine retries subscribe 1s→30s. Run owns that loop: retry with exponential backoff (1s doubling to 30s, reset after a healthy run), fail fast only on configuration errors no retry can fix, and join the live loop on ctx cancel so it slots into the cancel → join → drain ordering.
Co-Authored-By: Claude Fable 5 noreply@anthropic.com Claude-Session: https://claude.ai/code/session_01JkQyJPQExxz9SfcydyVVJj Entire-Checkpoint: fe2d2a21c454