aadb45b0

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Add safe-coloured-text-parsing package for ANSI escape code parsing

New packages:
- safe-coloured-text-parsing: parses ANSI SGR escape codes from Text
  into styled Chunks (the inverse of renderChunkText)
- safe-coloured-text-parsing-gen: GenValid instances and tests

Two-layer attoparsec architecture:
- Layer 1 (tokenizer): Text -> [AnsiToken] via attoparsec Parser
- Layer 2 (interpreter): [AnsiToken] -> [Chunk] via style-state fold

Both layers support lazy Text for streaming. 28 tests including
property-based roundtrip (render then parse recovers chunk style).