Using IO Completion port for IO thread instead of select
converting StreamEngine to state machine
PGM works with AsyncIO
StreamEngine catch exception during the statme machine and enqueue them
for handling after the current action handling is done
Merge pull request #168 from somdoron/AsyncIO

IO Completion ports