add load balance for spartan: just simply migrate tiles to other
workers.

without load balance when testing a small set of clueweb, the time cost
for each iteration is about 9.9s.
after adding load balance, the time cost for each iteration will drop to
5.4s.
change some log level to debug
fix random expr being evaluated multiple times bug and the wrong tile_shape bug in distarray
rename the update_and_apply_new_tile to maybe_steal_tile and add some
docstring to some code
fix ParakeetExpr has not attribute 'fn' bug
fix FnCallExpr not defined bug
change not_idempotent expr to be evaluated at once
Merge pull request #152 from MaggieQi/master

add load balance for spartan: just simply migrate tiles to other workers.
Merge remote-tracking branch 'upstream/master' into SliceRotation
Current optimization is not idempotent. This makes some tests failed
if we turn on slice rotation. Disable these tests until we fix the
idempotent issue.