WIP: Implement Raft replicator
This MR does the following things:
- Implement replication Raft group and its state machine. This type of Raft group manages and broadcasts the list of partitions of a node.
- Bootstrap replication Raft groups that watch for new partitions from targeting storages.
- Add some functionalities to WAL log consumer.
- Implement a log consumer bridge that plugs into WAL.
- Implement a replicator that manages the replication of a storage. It does the following works:
- Monitor any changes of replica groups from upstream.
- Track new partitions from other storages.
- Push changes from log consumer to corresponding replication Raft group.
At the moment, the replicator hasn't applied the changes. It lays the foundation for capturing and broadcasting changes. The actual changes replication will be added in the next MR.