examples: fix a typo in page_rank
worker: use a compatibility layer for persistent hashing

We have to make use of the fast hash function in python 2 and only fall
back to the hashlib in python 3.
jobpack: make reduce_shuffle optional

a reduce_shuffle phase after reduce might be useful for decreasing the number
of outputs that are given to the client. By default, one output is going to
be created for each reduce. However, there might be a lot of reduce tasks (one per
each label). The need_reduce_shuffle can be specified to request a simple stage to
combine the results of reduce.
By default, disco avoids the reduce_shuffle phase.
Merge pull request #588 from pooya/reduce_shuffle

Reduce shuffle