Improve selection performance
Improve the performance of select by adding direct_send and optimistic first pass read approach
ZenQ Select() is now comparable to channels although not as fast for large batch sizes
To improve ZenQ's selection performance even beyond this, the goroutine pointer itself has to be mutated for even faster data transfer during selections
With Input Batch Size: 60 and Num Concurrent Writers: 4
Chan Select Runner completed transfer in: 55.375µs
ZenQ Select Runner completed transfer in: 56.125µs
====================================================================
With Input Batch Size: 600 and Num Concurrent Writers: 4
Chan Select Runner completed transfer in: 181.334µs
ZenQ Select Runner completed transfer in: 432.75µs
====================================================================
With Input Batch Size: 6000 and Num Concurrent Writers: 4
Chan Select Runner completed transfer in: 936.042µs
ZenQ Select Runner completed transfer in: 4.410916ms
====================================================================
With Input Batch Size: 600000 and Num Concurrent Writers: 4
Chan Select Runner completed transfer in: 140.836375ms
ZenQ Select Runner completed transfer in: 380.546875ms
====================================================================