Main changes:
* Better separation of what is common from what is specific to a
communication technique
* Consumer wait initialization of all producer threads
Main changes:
* change library initialization: initialization is done with
init_library once and init_thread_comm by each thread
* cont is now directly accessed by main
* list of struct communication_assoc -> array of struct thread_comm
* struct communication_channel -> struct comm_channel