Provides support for describing and applying textual document editions.

A complex textual edition can be described by a tree of `TextEdit`s. An edit can be applied to an `IDocument` by calling `TextEdit.apply` or by using a `TextEditProcessor`. Applying a text edit can record a reverse edit description that can be used to undo the edition.

Use the standard edit kinds to describe the basic document editing operations:

- replace a document range: `ReplaceEdit`
- delete a document range: `DeleteEdit`
- insert text: `InsertEdit`
- track a range while the document is being modified: `RangeMarker`

Other subclasses of `TextEdit` exist for specialized tasks. Use `MultiTextEdit` to compose a complex edit tree, or subclass it to provide a custom edit.