Base task executor should provide 'wait_for_any'

Instead of having each task executor reproduce the same
code for 'wait_for_any' we can just have the base task
implementation provide the function that everyone is
replicating instead; making common code common and save
the headache caused by the same code being in multiple
places (which is bad for multiple reasons).

Change-Id: Icea4b7e3df605ab11b17c248d05acb3f9c02a1ca
Merge "Base task executor should provide 'wait_for_any'"