wrapTextWithAnsi() was processing each line independently after splitting
on newlines, losing ANSI state. When styled text contained embedded newlines
(e.g. from markdown paragraphs), subsequent lines would lose their styling.
Fixed by tracking ANSI state across lines and prepending active codes to
lines after the first.
Fixes#197