feat: LZMA2 decoder and EncodedHeader decoding
LZMA2 wraps LZMA with chunk framing: a 1-byte control selects
end/uncompressed/LZMA, encodes uncompressed and compressed sizes for
each chunk, and signals dict/state/props resets at the boundaries.
decodeLzma2Stream walks those chunks, flushing the LZ window between
chunks so the run can exceed the dictionary size.
with a one-coder dispatcher in lib/codec/folder.ts (Copy, LZMA,
LZMA2 — multi-coder chains and BCJ filters land later), the
container layer can now decode EncodedHeaders. bla.7z's
LZMA-compressed end-header now round-trips through readContainer
and recovers the original test1.xml entry; the previous "throws on
EncodedHeader" guard is replaced with the round-trip assertion.