Allow to unsubscribe from events

Currently there is a subscribe() function for both nodes and clusters, but the corresponding unsubscribe() has not been implemented.

Doing a proper unsubscription is tricky, and will need to take proper care to handle both sides of the connection:

On the node/network side, if we call unsubscribe it will happen for our connection. We must make sure this is not done unless we are removing the only remaining subscription, as it's technically possible to subscribe to the same information with multiple callbacks.

On our client side, we would need to implement a list of subscriptions and their related callbacks so that we can unsubscribe a specific callback without necessarily unsubscribing other callbacks form the same event. We would also need take into consideration that it's technically possible to subscrive to an event with the same callback multiple times and decide if this should be a supported behaviour or not. Depending on outcome, we would use either removeListener() or removeAllListeners().