refactored extprocs, added unit tests and a cross_thread_semaphore_t, moved js_job_t and js_runner_t to the extproc directory, fixed a lot of problems with extprocs and made the pool of workers global rather than per-thread