Small pure text transforms used by Edit/Tools actions.
Two shapes live here: whole-text transforms (&str -> String: line-ending
conversion, blank-line squeezing, ROT13) and cursor-relative rewrites
((&str, usize) -> Option<(String, usize)>: increment number, smart toggle,
transpose). The host applies the former via
App::transform_selection_or_buffer and the latter via
App::rewrite_at_cursor; everything here is unit-tested without a terminal.