Add support for the 'U' command (undo latest changes on one line)

This pull request adds support for the `U` command (undo latest changes on one line).  This is implemented by adding a line change tracking service that follows caret and text changes, saving the original contents of the current line and the last changed line.

There are many little idiosyncrasies of the vim implementation that this rough version doesn't exactly match but it captures the spirit of the feature and should be intuitive to people accustomed to vim semantics.