separate (Input|Output)StreamExecutor because their main loops are different
separate (Input|Output)StreamExecutor because their main loops are different

laysakura/shellstreaming,laysakura/shellstreaming