Lots of work to support storing plugins in a database for clustered usage.
- Axed AbstractXmlPluginLoader from plugin loader hierarchy as it dealt with separate concerns (XML parsing now done by DescriptorParser)
- Split PluginManager into two interfaces: PluginAccessor and PluginController
- Introduced the concept of a PluginInstaller: a class which installs plugins somewhere for safe keeping
- New method installPlugin() on the PluginController interface
- Abstracted plugin descriptor parsing for easier testing.
- The SinglePluginLoader always recognises system plugins (as it only accesses trusted sources)