Refactor to conform with Nvim external plugin infrastructure

- Move some code from plugin_host.py to script_host.py
- Remove script_host.py and tests, it now belongs in Neovim repository
- Rename "plugins" to "plugin"
- Add plugin/decorators.py module. Now plugins are defined with these
  decorators.
- Rename plugins/plugin_host.py to plugin/host.py
- Fix flake8 errors in plugin/host.py
Remove register_provider wrapper
Remove unnecessary _greenlets set from session

References to greenlets are already kept by closures, there's no need to
store them explicitly in a set
Replace Session.post by Session.threadsafe_call

Session.post is a hack to allow communication from other threads, but it is much
simpler and cleaner to allow callbacks be invoked from the main thread.

Also support an optional "setup callback" in the Session.run.
Bump version