Use a better list append in shuffles

This is helpful in scenarios where we have a large number of values in a bucket. 

For example in the test case used in #57 (40000 lines with string keys and around 20k values per bucket), with the master branch it takes around 104 seconds on my laptop for partitionBy.

With this patch it takes around 8.57 seconds to do the same operation.

CC @zhangyouhua @piccolbo
Perhaps move this link to the function's doc