Merge pull request #526 from JohnTheAppleSeed/implement-vim-C_x-and-C_a

when cursor moves because of C_a/C_x column should be forgotten
Be sure that C_a/C_x can be undone properly

That means that:
1- we must remember the right position to undo only when it will succeed
2- call fixOperationCommands when it succeeds
3- call cancelOperationCommands when it fails.

Add undo tests.