Add raft-based replication to bees

In v0.1, bees used a custom way of replicating their state. With the
new implementation of raft in v0.2, bees should also use raft for the
purpose of replicating transactions. It has more overheads, but the
end-result is exteremely simpler.

This commit adds the first version of that with no support for fault
tolerance and elasticity. Next CLs will add support for those.
Add cancel to line

We need a function that cancels a line entry without blocking. This
commit adds cancel() for that purpose.
Add sync command

cmdSync is used as a method for barrier on raft entries.
Fix peering structure
Call line.cancel() on errors
Improve loggs and make them consistent
Add test for hive failure
Fix log inconsistencies
Fixes peer list in bees

Followers should start their node with an empty list of peers.
Add support for detached

The new version lacked support for detached bee. This commit refactors
the existing code and reimplements that for the new structure.
Relay raft messages directly to bees

Raft messages used to be sent as commands to bees. This may cause
problem during colony formation and migration of bees. For that reason,
we directly relay raft messages to the bee's node similar to what we've
done for hives.
Add lazy dynamic recruitement of followers

This commit adapts the old bee replication semantics and implements that
using bee's raft node. The major change in this new version is that
followers are now lazily allocated when the first transaction is
committed.
Fix nit in logging
Add random replication startegy

This is a simple port from the previous version.
Add name to node and registry for better logs
Stop raft node when the bee stops
Takeover cells when the leader bee is elected

With the new switch to raft, we need to reimplemented the cell handover
mechanism. This commit adds:
- a status listener to raft/node that receives leader change events.
- capabilities to local bees to take over the cells from the pervious
  owner.
Add function to create unique listening addr

Tests used to reuse ip addresses and that causes concurrency and
synchronization issues. This commit adds a method that allocates new
address for each new hive in test cases.
Moving to kandoo from soheilhy