Channels

First channel implementation is ready.
It uses a simple lock-based solution and the `select` semantic is similar to Go's and Ruby's `IO.select`.

There are a couple of useful generic classes:
- `RingBuffer` a simple non-thread-safe ring buffer implementation
- `BlockingRingBuffer` a blocking implementation based on the previous one
- `WaitableList` a blocking list (maybe it should be called BlockingQueue :cold_sweat: ) - at the moment is only an internal class, not meant to be exposed, but it could be improved and published as a part of our public API

It has not been tested very much and lacks of documentation: I'm a but unsure if it should be merged today (to have it in 0.6.0-pre) or it's better wait a couple of days.