Add many useful helpers to be used in unit tests.
Use helpers in unit test.
Create an IClassFilter factory.
Allow superclassing and add test.
Improve ClientProviderFactory and add helpers and tests.
Create Client Provider API bundle to avoid dependency cycles.
Solve test dependency issue being class agnostic.
Reorder ApplicationInstance fields
Remove reduntant field storing IApplications implemented by an ApplicationInstance.
Move proxy initialization to a new protected method
Move proxy logic in ApplicationInstance to a new ApplicationProxyHolder class.

ApplicationInstance responsabilities:
- Hold the ApplicationInstanceLifeCycleState
- Hold the ApplicationProxyHolder (and instantiate it in its constructor)
- Act as a wrapper for an application instance holding dependencies (including IExecutioService) resolution state.

ApplicationProxyHolder
- Initialize and mantain a proxy that redirect calls to an application instance interface to an IExecutionService.
Merge ApplicationInstance and AbstractInstance.

AbstractInstance has been removed and all logic is now in ApplicationInstance.

TODO: Manage executionService resolution in a better and more clear way.
Call proxyHolter.setExecutionService when appropriated.
Use current class for logger in abstract class.
UnresolveAllDependencies affect application.

Current implementation resets fields in application and updates ApplicationInstance injectedDependencies field.
As previously, it also updates pending and resolved dependencies in ApplicationInstance.
Improve generic type methods and add documentation.
Add abstract getInternalProvider method and implementations.
Move ICapability activate and deactivate methods to abstract class.
Move valid providers field to abstract class.
Unifiedly manage application dependencies and executionService dependency in ApplicationInstance.

Created the Dependency class.
ApplicationInstance now holds a single collection of dependencies.
This collection is used to retrieve pending and resolved dependencies, as well as injected ApplicationInstances used to resolve them.

This patch aims to do a refactor, without changing ApplicationInstance behaviour.