plugin: add PluginMetadataProvider interface

Signed-off-by: Rafał Malinowski <rafal.przemyslaw.malinowski@gmail.com>
plugin: add tests for PluginDependencyHandler

Signed-off-by: Rafał Malinowski <rafal.przemyslaw.malinowski@gmail.com>
plugin: fix PluginDependencyHandler behavior

Signed-off-by: Rafał Malinowski <rafal.przemyslaw.malinowski@gmail.com>