Breaking out stealing loop to separate function.

The function can be used externally, perhaps later by processors that
can avoid switching to the executor task.
First (broken) version of direct switching.

It's still damn easy to find a bug, but there do exist working runs,
so that's a step in the right direction.
Removing closure chaining.

With the new queues it seems it wasn't that useful anymore, and only added
complexity.
Fixing double-step behaviour with hack.

The step was being invoked by two tasks, which isn't good.
This is a hackish fix, they both still invoke it, but only one
actually takes effect (still will still have a race condition though).
Really fixing the double step problem.

Removing old partial fix.
Fixing scheduling bug by using steal.

Pop isn't fair when you need a queue (it's just a stack).
Insert yield during dequeue.

This gives a chance for another thread to enqueue, this was leading to
a kind of deadlock.
Changing to ck_ring in spsc_queue.

This saves some manual manipulation.
Fixing sizeof argument.

It wasn't a bug before, but it was still wrong.
First draft of mpsq qoq.
Freeing mpsc nodes for qoq.
Using 'custom' signalling for mpsc qoq.

The custom signalling is just bypassing the generic lock/signal mechanism
and just store the waiting processors directly in a list.

This also means the awakening responsibilities are explicit in the
queue.
Fixing randmat (others should be fixed as well).

This is only sort-of a fix, it's just so I don't double-lock things.
Statically allocate the sync closure.

Since we know it won't survive the sync area then we can just allocate
it on the stack of the client.
Cleaning up indentation in mpsc_blocking.c.
Fixing pkg-config spec to remove -lgc.

It's no longer used.
Merge branch 'master' of github.com:scottgw/quicksilver
Merge branch 'direct_processor_reschedule'