Add interface for external extension packages

* Add vim-mode service provider. Service provides:
  - observeVimStates (main entry point)
  - getStateForEditor
  - onDidAttach
* Export motions, operators and view-models for extensions
* Add mainModule::getStateForEditor.
  It returns VimState for specified TextEditor
* Add did-attach event and mainModule::onDidAttach.
  It invokes callback for new VimState instance when vim-mode is attached
  to a new TextEditor.
* Add mainModule::observeVimStates
  It works the same way as Workspace::observeTextEditors
* Dispose vim state on editor destroy to prevent editorStateMap memory
  leaking