Handle textInput events in a way that works with autocomplete-plus

Fixes #2318

This commit also changes input handling to be more like it was in the previous editor. We're using textInput rather than input events because they are emitted *before* characters are inserted, enabling much simpler detection of characters inserted via the accented-character menu on OS X.

We're also handling these events on the editor instead of the input component, which allows events to bubble from autocomplete-plus's hidden input element.

Previously I avoided this because something about it was causing reflows in the old editor, but in this editor that doesn't seem to be a problem, and it's actually faster.