Reduced the number of unnecessary pthread_cond_signal() calls.

It costs a little more bookkeeping, but at 30ns per call it doesn't take a lot of avoided ones for the bookkeeping to be worth it.
In the case of buffered channels, the savings are at least 30ns per send/receive pair, since signal was always called twice, but can logically never be needed both times.

Overall, this 30ns gain is only 1% of one message passing delay, but optimization must start somewhere, and everything counts.

Note: the N-element buffered channel is 400ns per send/receive pair than the 1-element buffered channel. The queue (linked list) solution is clearly too costly.
Housekeeping.