Add WaitAll(Task[] tasks, TimeSpan timeout) overload