make jack test exit without error if jackd is not running
sched.emit() is only allowed inside a scheduled coroutine
add error checking on nanomsg.close()
refactored require('zzlua') into a dolibrary() call
handle SIGINT in zzlua.c
event loop is not running at the beginning, so initialize running to false
add function del_listener(evtype,l)
extract pthread cdefs into a separate lib
ability to stop async worker threads
move struct timespec and other time-related cdefs to time.lua
major reorganization of scheduler code

new features / architectural changes:

- scheduler modules (initial implementations in async and signal)

- scheduler is a singleton, replaced with a new instance at every sched() call

- scheduler state is properly cleaned up when sched() exits:

  * signal handler thread is stopped
  * async worker threads are stopped
  * event sockets are closed

- sched.sleep(seconds)

- event handlers registered with sched.on() may be removed with sched.off()

- when the signal handler thread gets a SIGINT or SIGTERM, it doesn't exit
  immediately. calling nn.close() on the event socket right after the
  nn.send() of the signal message apparently causes a drop of the message.

  so after handling the signal on the Lua side, we use a SIGALRM to trigger an
  exit on the signal handler thread.