Merge pull request #80 from andrusha97/raft

Raft
Fixed warning about unused private field.

Because of we treat warnings as errors it results in compile error.
Codereview, part one.
Service resolver no longer requires `context_t` object.
Merge pull request #81 from 3Hren/master

Fixed warning about unused private field.
Add method to retrieve status of Raft node.

Now it's possible to discover if a node is follower, candidate, leader, or it even hasn't joined a cluster. This information is usefull to monitor cluster state.
Typo.
Add proper includes.

Classes in forwards.hpp use boost::optional and boost::variant, so corresponding headers should be included.
Fixed RHEL6 builds.
Fixed a missing return statement.
Don't run reactor from two threads.

Each actor creates own thread and runs its reactor there. So passing one reactor to two actors is a bad idea.
Merge pull request #82 from andrusha97/raft-monitorings

Raft monitoring
Raft leader becomes follower if it can't communicate with a quorum.

If a leader can't communicate with a quorum, it can't process requests, but accepts them to the log. It may lead to filling the log with requests, which will not be processed in a reasonable time. So it's better for a leader to become follower and discard requests.
Fixed removing of nodes from cluster.

Before removing of node was supposed to be manual procedure. An administrator was supposed to remove the node from configuration mashine via control service and then shut down the node to disable its activity. Now a node always automatically stops any activity during removing of it. So nodes may be safely removed by any program.
Fixed automatic disabling of removed Raft leader.

When a leader removes itself from the cluster, it continues to be a leader, but doesn't count own votes during elections and replication. It's totaly safe but may be confusing. So now leader disables itself, after it commits self removing from the cluster.