WIP: Component view framework

The dependency scopes look the wrong way round here - dependencies to plugins should use `provided` scope, whereas dependencies to components should use the default scope. This has less impact than it did previously, because we're now using Karaf features which handle duplicate references (ie. you can have two plugins using the same component and it will use reference counting to decide when to uninstall the component when uninstalling plugins).

Currently we're using plugins (which each have an associated feature) to aggregate functionality - so a dependency to a plugin should be `provided` scope to avoid bloating this plugin feature with bundles that are not directly used by this plugin (but are transitive dependencies of the other plugin). Whereas components that this plugin uses directly should use the default scope so that they're included in the feature and get installed when we assemble the plugins into the distribution.

In the future we should be creating new modules under `components` and just use the default scope for dependencies. (Whether we'll then need nested folders to group related modules together is an open question.) Eventually I can see all modules in the `plugins` section moving to `components` and we'll have a new section called `features` (either at the top-level or under assemblies) which simply aggregates the various component modules into respective features that can be installed/uninstalled separately.