Add wait-free unordered list data structure
Add a rather useful comment
Make allocate_tls() abort instead of return an error
Major overhaul to the vcore code

The main motivation for this overhaul was to get rid of the __vcore_mutex
protecting calls to vcore_request() and vcore_yield().  With this commit, we
not only remove all locks in favor of atomic operations for requesting vcores,
but also remove the stupid "ghost" vcore that we used to leave sitting around
once the first vcore_request() was made.  Insted we now (on the fly) convert
the main context to a ucontext and reconstitute the main thread as vcore
0 running on a different stack with a newly allocated tls.  An added side
effect of this change is that the new vcore_request() code is much cleaner and
easier to follow. And the core logic for vcore initialization and
requesting/yielding is much better factored now.

We should also be much more performant because we no longer do any locking.
Increase default stack size (so google-pprof will work)
Get things working with --disable-vcore-as-pthread again

(When compiling for x86_64)