refactored ComponentFactory. IComponentFactory now declares public interface

IComponentFactory was an empty interface, the base class ComponentFactory
declared all methods and properties. This has been changed. Now
IComponentFactory is a 'real' interface, declaring all methods and properties
ComponentFactory only provides default implementations.

The ComponentFinder searches for IComponentFactory instances and now can
directly USE these instances, instead of having to cast them to base class
ComponentFactory.

Change-Id: I39561c686c6b8cd345dd0915ccb116774eec67f1