Adding VI edit mode, along with unit tests.

Note, these items need work:
 - No support for Yank/Paste yet.
 - No support for 'G' history goto yet.
 - Undo works, but not as desired in some cases.