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.
In this case, I actually want it to be synchronous because we have to hide the scroll bars, update, show the scrollbars measure, then update again with the results of the measurement. Doing it synchronously keeps the chain of events clear.