reduceFrames = function (frames) {
    frames = frames.map(function (f) { return Math.max(0, Math.min(f, lines.length - 1)); });
    while (frames.length > 1 && frames[frames.length - 1] === frames[frames.length - 2]) {
      frames.pop();
    }
    while (frames.length > 1 && frames[0] === frames[1]) {
      frames.shift();
    }
    return frames;
  }
Renders the editor on the next available frame, if applicable.
Multiple calls to `.render` will not negatively impact performance, extra
calls are debounced.
@param {string} value The value to render within the editor, should typically be `editor.value` or `editor.getValue()`
@param {boolean} forceRender Force an update on the next frame