Polished source code
Add a test suite to the library

The purpose of these tests is to actually check for all kind of
mailboxes that the concurrent pipes terminate (or not terminate) as
expected when either the producer or the consumer stops.
This way we can detect these tricky regressions when the underlying
implementation changes.