Wire policy engine into replication and optimize firehose to apply blocks directly
Firehose incremental pipeline: handleFirehoseCommit() now applies blocks
directly from the firehose event via applyFirehoseBlocks(), skipping the
HTTP round-trip to the source PDS. Falls back to full syncDid() for edge
cases (tooBig, rebase, sequence gaps, CAR parse failures). 14 new tests.
Policy engine integration: ReplicationManager optionally accepts a
PolicyEngine to drive which DIDs get replicated, at what frequency, and
in what priority order. Per-DID sync intervals replace the fixed 5-min
global timer. Server startup loads policies from POLICY_FILE and wires
them through. Fully backward compatible when no engine is provided.
20 new tests.
Also fix flaky temp dir cleanup in replication tests (ENOTEMPTY race).