Batch all editor updates together automatically via process.nextTick

Fixes #2642 #2635 

Previously, I was trying to explicitly batch editor updates together with the `batchUpdates` method, but it was going to be impossible to catch everything. The bugs referenced were caused by cases where we were forgetting to batch, which caused massive redundant work to be performed. This PR updates the update mechanism to always wait until the end of the current synchronous code block with `process.nextTick`. It seems to be more responsive than `setImmediate`, so this also supplants the mechanism that delayed updates for decorations.
Even simpler, what about an `performSyncUpdates` flag the package author could set in their `beforeEach`. Then they wouldn't have to worry about it. Problem is that it would go a bit slower with redundant updates.