Endpoints and Protocols

Added Endpoint and Protocols management:

* `IInternalClientProvider` and `IInternalAPIProvider` and their implementations have a `getPrococols()` method return an String array of valid protocols for this provider.
* `IClientProviderFactory` and `IAPIProviderFactory` and their implementations can receive optionally in their methods a new interface called `IEndpointSelectionStrategy` allowing to pass the logic to choose an `Endpoint` of the associated `IRootResource` with the given protocols. There is a `BasicEndpointSelectionStrategy` to be used as default strategy.
* Created `EndpointNotFoundException` to be launched when it was not possible to select and `Endpoint` given the array of protocols.
* Adapt examples and tests to make use of these new features.
* Bugs solved in `ApplicationInstance`.
In this case the strategy only has to be initialized once. See comment on `APIProviderFactory` also.