Added undo/redo support and safer side effect prediction to caret color
changes in TextModel.

Signed-off-by: Jakob Brandsborg Ehmsen <jakobehmsen.github@gmail.com>