Follow-up refinements to the long-URL forward-walk:
- Build the walk on the shared enumerateCharsInRange: machinery
instead of a hand-rolled successorOfCoord loop, so it respects
hard line breaks and no longer joins a URL to unrelated text
across a hard newline in the default configuration.
- Decode each cell to its actual character(s) and judge membership
with the passed-in character set, so IDN hosts that use composed
graphemes are no longer truncated.
- Exclude image cells before interpreting theChar.code, whose value
for an image is an image number that could collide with a DWC
sentinel.
- Add URLForwardWalkTests coverage: soft-wrap crossing, coordinate
mapping, maxChars cap, hard-newline stop, image stop, composed
grapheme inclusion, and non-member complex-char stop, plus a
manual test fixture in tests/.