build: fix test imports
tests: adds test-case for multiple receivers

the original implementation has a bug which would leave a receiver
hanging.
refac: use cond instead of if

for consistency
feat: adds gochan-for-each

applies proc to all incoming messages as they appear. returns when channel is closed.
refac major wip: introduce gochan-receive* with list wrapping

so that you can distinguish between a message (a list) and failure (#f).

this is _much_ better than the callback-based version as those will be
invoked during the mutex lock.

todo: cleanup tests for this change
tests: updates tests for new api

- no on-closed callback
- multiple gochan-for-each workers
cleanup: remove bogus comment
sample: adds worker-pools.scm for API usage example
refac wip: rename gochan-condvar => gochan-condvars

because it will become a list of condvars, each owner by its "listener
thread", not a single on owner by gochan
refac major: allocate condvar per-receive not per gochan

this should allow us to receive from multiple channels (like go's
select)

tests pass!
log minor: changes error message wording
refac: adds semaphore concept

because this should enable us to support an upcoming concept: receiving
from multiple channels, aka Go's select.
refac: named semaphore api

using better naming for binary open/closed semaphores
feat major: supporting multiple channels

api-change:
gochan-receive now also accepts list of channels.
gochan-receive* now returns a (cons msg chan) for messages (so you know
channel the msg came from), and still #f for all-channels-closed.

gochan-for-each should work as usual, but accepts a list of channels and
returns only when _all_ channels are closed.
doc minor: fixes comments
refac: renames all condvars => semaphores

because that's what they really are (except internal representation is a
condvar)
feat: adds gochan-fold

fairly simple, should make testig a little easier too!

Conflicts:
	tests/run.scm
refac: moving gochan-for-each and gochan-fold tests together
tests fix: use test-exit exit code
bugfix: proper use of semaphores in gochan-close

hard to write tests for these ...