Dependency work

Rearranged the types in the project such that I could more freely use
interpreter types in the core interfaces.  This is a necessary first
step to allowing easier access to the interpters from the IVimBuffer
which owns them
Refactoring of interpreter to an interface