Add aggregate all futures method

* Throws an exception if _any_ futures time out (`aggregate` will fail without throwing an exception.)

Required for https://jira.dev.bbc.co.uk/browse/IPLAYER-19674