Grand refactoring and dynamic configuration support in Raft.
The second part of dynamic configuration management in Raft.

Some bugs fixed, some logging added.
Stop election timer when a node is removed from cluster.

If a node is not in cluster, it shouldn't attempt to become a leader.
Unused node state "not_in_cluster" has been removed, because a node knows own configuration and know if it's in cluster or not.
Add some useful callbacks to Raft.

Now Raft algorithm calls methods of state machine, when it becomes a leader, follower, and when all entries present in the log are applied.
Added configuration state machine.

'configuration_machine_t' is responsible for managing of configurations of all state machines in the cluster. When a user wants to add or remove node to some state machine, he or she should send request to this configuration machine, which will apply the change to the target state machine.
Using of the configuration machine allows to create new machines "from scratch" without system administrator help. When new node adds itself to some state machine and it is the first node in the machine (so the node creates it), the configuration machine responds, that the node is the first, and it's safe to become a leader and create new log.
Some fixes in ASIO.

Now readable/writable streams stop own watchers in destructors.
Configuration machine provides more detailed responses.
Now Raft nodes join clusters automatically.

A system administrator just needs to run one Cocaine node with flag --bootstrap-raft and other nodes will create and join state machines automatically.
Move name of configuration state machine to config.

Hardcode is a bad idea.
Remove some unnecessary logs.
Disable Raft if it's not configured.

Raft cluster should be small, so it should contain only meta-balancers for example. On other nodes it will not be even initialized, if it's not mentioned in config.
Don't step down when receive vote request from unknown node.

Now Raft leader doesn't start new term, when receives vote request from node, which is not in the cluster and has old log. Such node anyway may not become a leader, and probably it's a stale node, which was removed from the cluster, but doesn't know about it. So it shouldn't force meaningless reelections.
Remove unused Raft actor states.

Actor state is only used to determine if the actor is a leader. Now states are removed and atomic bool flag is used for this purpose. By the way method is_leader() has became thread-safe.
Split Raft service into two services.

Now there is raft control service, which is supposed to be used by a system administrator, and raft node service, which is used by Raft internally.
Add some methods to Raft control service.

Now it has a method to get configuration of all state machines and a method to retrieve current leader of a state machine.
Now leader doesn't tells that it's leader, when it becomes follower.

Raft actor stores last known leader in special variable. Now actor resets this variable, when it stops to be a leader.
Hide some Raft actor's methods from user.
Forgot to add some files.