Cluster-wide configuration with the picodata version features
Backstory.
Sbroad often changes the communication protocol: one day we send an SQL string, next time - some serialized IR... who knows, what would be next. As picodata plans to support an online node upgrade in the cluster, we need a way to know when the client can switch to a new protocol communication.
It seems to be a good idea to deligate the responsibility of the node feature tracking to the picodata itself. We can implement some kind of a cluster-wide space with a list of supported picodata features for each node in the cluster. It can be stored in a form of a dictionary/json with an arbitrary structure. When the node connects to the cluster it updates of its features in the cluster-wide space. There would be a small lag when other nodes see an old version of the node's configuration, but we must support backwards compatibility while configuration update.