[WIP] Refactor plugin system

This supersedes #1335, using funcrefs instead of autocommands to implement providers(it is cleaner and requires less changes).

Should be `a:host` here no? I'm pushing small things I find [here](https://github.com/myitcv/neovim-editor/tree/refactor-plugin-system)