Apply edits to files on disk. Edits are sorted by byte offset descending per
file and applied back-to-front to preserve offsets. RenameEdit is also used
by LSP WorkspaceEdit text edits, so this handles insertions and multi-line
replacements when old_text spans a range.