Initialize the logger with basic config in the cli
Remove useless wrapped event
Rename bufchan to channel

After all, we are dealing with an abstract channel, no need to know if
its buffered or not in the patterns.
header -> xheader
Define a channel interface

We are in python so it's merely a way to document the code.

 - requires a channel to accept timeouts on operations directly
 - expose few useful properties
Adapt events to the new channel API
Handle REP/REQ with new channel API
Adapt channel to the new channel API
Adapt heartbeat to the new channel API
Adapt core to new channel API
Adapt the patterns to the new channel API
Channels are closed responsibly by patterns

Instead of doing horrible __del__ stuff and freezing everything in the gc,
and sometimes getting totally absurd errors:
 -> lets cleanly and explicitly close our channels all the way down.
ReqRep pattern will only accept OK and ERR events.

This mostly for pretty symmetry with the ReqStream.
Open pandora box: allow hooks for patterns
More robust unit tests, less race conditions

 - Bump timouts value to avoid false unit test errors: Basically, some
   timeouts are a little bit to short for fast testing.

 - Fix transiant unit test failure on pubsub.
     - you log all msgs
     - you send one msg
     - heartbeat msgs are logged
     - you check for only one msg: bad
     - you check if your msg appars among the heartbeats: good

    This was a beautiful race condition, since most of the time, the
    heartbeat is slower than how fast you send and test your msg.

 -  Wrap in coroutines.

    HeartbeatOnChannel can raises to its parent at any time.
    Encapsulating the code in its own coroutine will reduce race
    conditions.