plugin: extract PluginDependencyHandler class

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

Signed-off-by: Rafał Malinowski <rafal.przemyslaw.malinowski@gmail.com>
plugin: move documentation from plugin-manager.cpp to plugin-manager.h

Signed-off-by: Rafał Malinowski <rafal.przemyslaw.malinowski@gmail.com>
plugin: move checking for plugin conflicts before activating

Signed-off-by: Rafał Malinowski <rafal.przemyslaw.malinowski@gmail.com>
plugin: fix implementation of PluginDependencyHandler::withDependen(cie|t)s

Signed-off-by: Rafał Malinowski <rafal.przemyslaw.malinowski@gmail.com>
plugin update checks in PluginManager::activatePluginWithDependencies

Signed-off-by: Rafał Malinowski <rafal.przemyslaw.malinowski@gmail.com>
plugin: add PluginDependencyGraph::plugins() method

Signed-off-by: Rafał Malinowski <rafal.przemyslaw.malinowski@gmail.com>
plugin: move validating graph to PluginDependencyGraphBuilder

Signed-off-by: Rafał Malinowski <rafal.przemyslaw.malinowski@gmail.com>
plugin: better use of move semantics

Signed-off-by: Rafał Malinowski <rafal.przemyslaw.malinowski@gmail.com>
plugin: all cycle removal is now moved to PluginDependencyGraphBuilder

Signed-off-by: Rafał Malinowski <rafal.przemyslaw.malinowski@gmail.com>
plugin: added test for new behavior

Signed-off-by: Rafał Malinowski <rafal.przemyslaw.malinowski@gmail.com>
plugin: extract method in PluginDependencyGraphBuilder

Signed-off-by: Rafał Malinowski <rafal.przemyslaw.malinowski@gmail.com>
plugin: fix PluginDependencyGraphBuilder::buildValidGraph to match tests

Signed-off-by: Rafał Malinowski <rafal.przemyslaw.malinowski@gmail.com>
plugin: use PluginDependencyGraph API in buildValidGraph()

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