use chansource as output in where operation
add parallelMapListToChan, prepare to continue to restructure
restructure getGourpBy function
restructure and add an error handler
restructure the parallel function for map the datasource to chan
add callback to close chan when all items be completed in a step
use bufferchan in parallelMapToChan function
fix the deadlock issue when use buffer chan as out chan
add reduceDistinctVals function