[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
The docstring for the `n_jobs`  parameter is confusing. I can rewrite it state that this is the maximum number of concurrently running jobs, such as the number of worker python process when `backend="multiprocessing"` or the size of the thread pool when `backend="threading"`.