Add grouped undo for all text editor commands

This shouldn't be merged yet because it depends on [an unreleased text-buffer branch](https://github.com/atom/text-buffer/pull/36). Just wanted to get feedback on this approach.

Per a conversation with @kevinsawicki, I avoided changing the behavior of the `TextEditor`'s existing programmatic API. Callers can opt-in to undo-grouping using `TextEditor::withGroupingInterval`.

I updated the listeners for all editor commands and for the `textInput` event to use this method.

Closes #1606