Add experimental optimization to avoid dirtying single-char changes that do nothing and cursor movements that don't need to be drawn. Turn it on by setting the ExperimentalOptimizationsEnabled user default. Also draw each dirty rect rather than the bounding rect of all dirty rects