A ContinuationPool just holds on to old Continuations that are reusable, and vends
them back out again. This amortizes the cost of allocating continuations, which involve
allocating new stacks (mmap), mprotect, etc.
Possibly yield back to the executor to perform a context switch. This function should be
called before any visible operation. If each visible operation has a scheduling point
before it, then there will be a potential context switch in between any pair of visible
operations, which is a necessary condition for completeness.