fix up the test harness to support noitd restarts and
expected crashes

Add different cancellation methodologies to the jobq implemntation

"evil_brutal" which is the old siglongjmp way.

"cancel_deferred" which uses pthread_cancel w/ CANCEL_DEFERRED

"cancel_asynch" which uses pthread_cancel w/ CANCEL_ASYNCHRONOUS

Add a game over scenario is the cooperative cancellation mechanisms
don't work and end up exhausting all the threads in a pool.

Reduce the minimum check period set via REST to 1s to enable better
testing. NOTE: maybe this should be much smaller even.

Change the thread pool system to spawn as new jobs are queued.
This isn't automatic demand-driven sizing, but rather we don't
start the (N) threads until (N) events arrive (not necessarily
concurrently).

Added a test_abort module that runs different types of faux workloads
to assist in testing the functional correctness of each method.
Workloads include, variable work time, variable method of cancellation
type and interruptable (nanosleep) and uninterruptable (compute).

Added fairly thorough tests for each method under each workload
condition. Tested on darwin (finding cancel_asynch to not work well).
Needs testing on other platforms.