Implement Core Features of Vim

This is a pretty massive overhall. The organization of code is currently embarrassingly bad, but I think the implementation is pretty okay.