Separate unit et integration tests
Extract the logger and specialize it
Reusing the logger in the main loop
Rework log messages
Respawning means we're not leader anymore
Rework logging and reuse state querying
Major refactoring

  * Behaviors (being a candidate, a leader or a follower) is now extracted
    from the core `Node` object.
  * Threads are started by DRb and objects are responsible for telling their
    stories using the logger.
  * The main loop doesn't do much except killing the leader and
    respawning it;
  * An unmuted node will now be a candidate by default.