List.waitAll : List (Task α) → Task (List α)
Given a non-empty list of tasks, wait for the first to complete.
Return the value and the list of remaining tasks.
Given a list of tasks, create the task returning the list of results,
by waiting for each.