Re-design the interactions among the kernel services

To ensure the detection of the kernels, contexts, and spaces, the differents services are based on the Hazelcast library. The interactions among the kernel services are mainly based on the Observer design pattern.

The ZeroMQ service is rewritten to support events from the ContextSpaceService and the KernelDiscoveryService to open connections to remote peer.

The interfaces in ```io.janusproject.services``` related to the definition of the services may be removed, except the ExecutorService, LogService, and NetworkService. Indeed, the other interfaces are services that may have only one implementation in the platform.