bugfix: cleanup semaphore opening

semaphore should be opened before any senders' get the chance to close
it. now we are guaranteed that we don't open the semaphore after someone
else has closed it.
build cleanup: make exports explicit
feat: adds timeout support in gochan-receive

todo: add timeout support in gochan-select
cleanup minor wip: pushed timeout value down

still need that timeout in gochan-select, don't know how to do that
with syntax-rules :(
doc minor: adds link
doc: adds golang channel comparison
feat: adds timeout support to gochan-select macro
doc minor: adds timeout to "features"