Render atoms as input elements, not contenteditable spans
Quickfix: don't re-select entire atom node text on every change
Cleanup: right-trim emitted class lists to remove whitespace
Make a better attempt to parse various atom types from input text