distributed 1.7.1

CQRS/ES framework for Rust using Plain Old Rust Structs — append-only events, replay, snapshots, outbox, service bus, and pluggable infrastructure
Documentation
### What's changed in v1.7.1

* perf: make Kafka ack/nack non-blocking on the async runtime (#78) (by @patrickleet)

  Per-message offset commits used CommitMode::Sync, which blocks the calling
  OS thread on a broker round trip; called from the async `ack` (and
  dead_letter/park) for every message, combined with the strictly sequential
  consume loop in bus/runner.rs, this capped throughput and stalled the tokio
  worker. nack additionally called a blocking seek with a 5s timeout in async
  context.

  Switch offset commits to CommitMode::Async: the offset is handed to
  librdkafka's background thread and returns immediately. This is at-least-once
  (unchanged from the current contract): the runner already acks only after
  handler effects complete, so a crash before an async commit lands simply
  redelivers the record — a duplicate the consumer already tolerates.

  seek has no async variant, so run it on tokio's blocking pool via
  spawn_blocking (the Arc-shared consumer clones cleanly into the task).

  Implements [[tasks/kafka-nonblocking-ack]]


See full diff: [v1.7.0...v1.7.1](https://github.com/hops-ops/distributed/compare/v1.7.0...v1.7.1)