Improve design

This commit removes the soft link between the factory and the endpoint.

Rather, each endpoint is registered alongside with the factory to use.
Added a default factory in case it is not defined at the endpoint level.

Improved the Javadoc and the test coverage.