A BftBinding can be stateful; it provides a new constructor and
access to a Node. Depending on the type of node, access can
be read-write or write-only.
A BftReader allows to read a key from a node. A BFT library/platform is expected to
provide BFT ordering functionality, i.e., all nodes should provide a consistent ordering
of written data to all readers, including when byzantine nodes are present.
A BftWriter allows to write a key-value pair to a node. It must be Clone because
writes to a single node are scheduled at regular intervals, without waiting for previous
writes to terminate, thus, writes to the same node can happen concurrently. The framework
avoids locking as much as possible and requires thus cloneability. The binding is however
free to implement cloneability with locking, i.e., with std::sync::Arc and a mutex.