perf: Phase 2 lazy StoredMessage materialization in FileStore
Replace eager Dictionary<ulong, StoredMessage> with lightweight Dictionary<ulong, MessageMeta> to eliminate ~200B StoredMessage allocation per message on the write path. - Add MessageMeta struct (BlockId, Subject, PayloadLength, HeaderLength, TimestampNs) — ~40B vs ~200B for StoredMessage - Add MaterializeMessage(seq) for on-demand reconstruction from blocks - Update all ~60 _messages references to use _meta - Methods needing full payload (LoadAsync, ListAsync, etc.) call MaterializeMessage; metadata-only paths use _meta directly - Fix MsgBlock.WriteAt to clear stale delete markers on re-write
This commit is contained in: