[vim] Refactor macro handling

Use CreateInsertModeChanges to make a copy of the latest
insert mode changes in pushInsertModeChanges so that the
latest insert mode changes can safely be modified without
bashing previously recorded macros.

Fix the :register command and add unit tests. Add a fakeOpenNotification for matching the notification text.
[vim] Fix :registers unit tests