Feature whenAny

This pull request to to add a new static Task method "whenAny" to complement the "whenAll" method.

As for the whenAll method, the whenAny method takes a collection of input tasks which will run in parallel and will return a new task which will be marked as completed when any of its input task is completed (succeeded/faulted/cancelled). The resulting task contains the input task which ran to completion.

If this sounds of interest to you and you consider a merge, please let me know and I will update the documentation accordingly if you wish.