Refactor View Models

So this is the refactoring that I did to the view models so the repo doesn't get out of hand, tried adding comments to the ViewModel class to explain why it exists (for operators that require extra keystrokes) and how to subclass properly (or properly in the view of when I made the class :P)

I noticed that there are other PR for operator pending operations, I didn't read them thoroughly but I apologize if this is a reimplementation of that. 

I followed the model (no pun intended) created by the Replace, Search and Marks view models and added on the find command as well (I can export the find command into another branch if this is too much for one PR).

Let me know what y'all think!