helper methods: iterate over selection spans in the document.

- Implement marks (superset of Selection/Range)
- Implement style configs, tab settings
- Visual tab width
- Refactor tree-sitter-highlight to work like the atom one, recomputing partial tree updates.
- Only render highlights on screen
- proper selection rendering
- Undo tree
- selection mode
- key sequence shortcuts (gg etc)
- syntax errors highlight query

- UI work: command line
- UI work: tab popup on command line
- UI work: completion popup
- UI work: floating pane