Adding TBB dep. and AM_PROG_AM to configure.ac.
Pulling out inner processing loop to its own function.
Adding primitives to mark wait condition processing.

This will allow processors waiting on their wait conditions to stay asleep
when other wait conditions finish.

This assumes that wait conditions don't modify state (this is bad anyway),
but this makes it so that if wait conditions do modify state then that
state change may not be picked up by other waiting processors.

It also requires a change to code generation, which has not yet been
implemented.
Removing gc.h include, never really worked with the tasks.
Fixing mutex for the time being.
Changing to new wait-condition notification behaviour.

The new behaviour now means that the conclusion of a wait-condition execution
(unlocking to let another processor change the status of the wait-condition)
does not wake other processors waiting on the same supplier.

The impact of this is that if wait conditions modify the state, then this will
not be felt by other wait-conditions.
A few superficial cleanups.
Removing goto from exec_get_work.

This should make debugging easier, since the assertions will be fired
as soon as they fail. Having the merge point before made it so the
generator of the weird task wasn't known.
Reusing exec_steal.

For the moment this is disguising a bug, but its necessary to work on other things
for the moment.
Make it so that a wait-condition doesn't not wake itself.

This was eliminated for the new scheme where the wait condition will hint the
processor that it does/doesn't need to wake up another waiting wait-condition.
However this may not propegate signals properly when the 'wrong' wait condition
is awakened and another's condition may now hold.
Updating to use set_in_wait/body style.

This is to make wait conditions more efficient.
Updates for llvm-base.
Change name of yield_to, remove task_run from API.

yield_to is now task_switch.

task_run is now a static function, replaced with task_set_func_and_run.
Shift stack allocation into ctx from task.
Shifting ctx.h to an internal directory.
Fixing unrenamed yield_to.
Moving valgrind header to internal/.
Partial refactor (non-compiling).
Adding new sched_task.

The sched_task interacts with the executor and sync_data.
This separates the task from the sync_data, and the provides a layer
beneath the processor.

Most structures will be based on this (i.e., blocking concurrent queues).
Increasing test size to 8000, fixing bug.