[WIP] Refactor plugin system

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

> echom 'provider: clipboard: no clipboard service found'

Fully agreed, that will seriously lessen the amount of duplicate issues. One more thing: I would mention in that message that the user can get more information on how to setup providers with by doing `:h providers` or `:h provider-clipboard` or something like that.