Cross-browser keyboard handling, undo/redo, etc.
Build sm-range, sm-selection, and sm-editor.