Application abstraction for the Melin durable transport.
The transport (journal, replication, pipeline, snapshot framing) is generic
over an [Application]: a state machine that defines the semantics of the
events the transport persists, replicates, and dispatches. This crate
holds only the trait definitions and small transport-shared types — no
matching logic, no wire codec, no I/O.
Split rationale: the transport is the reusable, commercial core; apps (trading engines, bespoke matchers, no-op benchmarks) plug in. Keeping trait definitions in their own crate means an app can depend on the abstraction without pulling transport internals.