build: make a proper egg
bugfix critical: closing channel signals all threads

there may be 10 threads waiting for a gochans' condvar. when closing a
channel, we want all these guys to "wake up" and retry receiving (which
will error by default)

condition-variable-signal! would awake only one such worker-thread. no
signal would keep blocking these workers (which would never ever wake up
again because you can't send to a blocked gochan).
bugfix: critical awake multiple threads when sending to empty channel

scenario:

0. make a gochan chan
1. thread A is waiting for condvar because chan is empty
2. thread B is waiting for condvar because chan is empty
3. we send msg 1 to chan (since empty, signals condvar)
4. we send msg 2 to chan (since non-empty, no signal)
5. from 3, thread A is unlocked from condvar
6. thread A processes msg 1 and exits
7. thread B is still waiting for condvar (only A was picked from 3)
8. thread B never sees msg 2 <--- bad!

the problem is that condition-variable-signal! only signals thread A,
and not B. condition-variable-broadcast! solves this by awaking all
threads that want to receive stuff from the channel - all of which
recurse into trying to re-lock the mutex.

this may be a slight performance hit if there are million of workers but
I still think this is the correct behaviour.

a different solution would be to condition-variable-signal! both on
empty and non-empty channels. this would correctly unlock thread B in
step 4. I believe this is only a matter of performance, however.