feat(pdftract-1bb17): implement RunLengthDecode filter
Implements RunLengthDecode filter per PDF spec 7.4.5:
- 0-127: copy next (len+1) bytes literally
- 128: end-of-data marker
- 129-255: repeat next byte (257-len) times
The implementation:
- Handles truncated input gracefully per INV-8 (partial bytes returned)
- Enforces decompression bomb limits
- Includes comprehensive test coverage for all acceptance criteria
Acceptance criteria PASS:
- Literal copy: [3, A, B, C, D] -> [A,B,C,D]
- Repeat: [254, A] -> [A,A,A] (3 times)
- EOD: [128, ...] stops at 128
- Truncated input: [5, A, B] -> [A,B] (partial)
- Bomb limit enforced
- Empty input handled
Closes: pdftract-1bb17