Switched from SplStack to plain PHP array.
Switch calls to Strand::kernel() to instead use member directly.
Removed CoroutineInterface::initialize() and associated event, they are unused and unnecessary.
Kernel now uses a regular PHP array for strand list.
Cache the current coroutine for each strand.
Avoid unecessary method calls in KernelApiCall.
Coroutine's no longer implement EventEmitterInterface, the finalize event was emitted too often to be practical. finally_ is still supported via an explicit mechanism on GeneratorCoroutine.
Swapped out tick-logic closures in Strand for a state-machine approach. Un-abstracted some shared code in GenerateCoroutine.
Switch bench script back to using futuretick/coop.
Merge branch 'feature/perf' into develop