[MRG] Automatically group short tasks in batches

This is based on an online evaluation of the batch completion time to dynamically tune the size of the batch of tasks to dispatch at once to a worker.

TODO:

- [x] ensure tests pass on windows
- [x] update the change log
- [X] test with scikit-learn
Actually the name of the local variable `queue_length` is a bit misleading here. Maybe this print_progress function is not doing what it's supposed to do anymore. But by using it is seems to behave correctly when changing the verbosity level.