allow tasks to request dedicated stack space when created
never copy over the root stack:
this is a hybrid approach to COPY_STACK where the root task is never
moved or copied, and all other task stacks are layered into the same
memory area (ptls->basestack + basesize)
several strategies exist for making new stacks:
ucontext_t (where it is available, aka linux)
unw_context_t (as an alternative to ucontext_t that avoids a syscall on task-switch)
makecontext (as a posix standard implemention)
setjmp/longjmp-based implementation (for systems where this is sufficient)
Windows Fibers (implemented here, since we can be more efficient and
reliable than the official Fibers API)
also, uses an alternate stack for use in collecting stack-overflow backtraces
like posix, but managed manually