First-pass implementation of :tabonly

This may not be the best way to have implemented it. I call `RunVisualStudioCommand` in order to perform the work, and it feels a little odd to add yet another layer of interpretation here. Thus, this should probably be refactored. However, it does work.

I wrote unit tests for the parsing but couldn't figure out a way to unit test the interpreter portion without being a brittle test of implementation.

Note that it doesn't work exactly the way it does in Vim due to the impedance mismatch between Vim and Visual Studio's tab handling. Specifically, because in Vim the splits exist within the tabs, whereas in Visual Studio the tabs exist within the splits, in Vim if you have multiple tabs and splits, `:tabonly` will leave you with the splits in your current tab, but close all your other tabs, whereas with VsVim it will close all your tabs in your current split, but leave you with the tabs in your other splits.

This fixes #1131 
In general VimCore tries to have 0 knowledge of Visual Studio.  The idea is that VimCore can be hosted in other environments besides Visual Studio (VimApp, Powershell ISE, Web Matrix, etc ...). 

This obviously gets violated in a few small ways, most noticeably that there is a command named `RunVisualStudioCommand`.  Probably should have named that `RunHostCommand`.  

The `IVimHost` interface is meant to be the bridge between the hostable layers and the actual host.  The intent would be for this to become a method on `IVimHost` named `CloseOtherWindows` or something along those lines.  Then the Visual Studio specific implementation (`VsVimHost`) would essentially have this code inside of it.