Added FutureUtil class to unify calls with multiple Future objects

Fixes wrong deadline timeouts as mentioned in #2964. Hope to found every single loop that have to be exchanged.
the problem with the current naming is that it is very difficult to see based on the name which method you are testing; especially since your future util his many method.

I use this naming style when I have many util methods

namemethod_whenCase
or
namemethod_whenCase_thenOutcome

So

waitWithDeadling_whenTimeout

You can play with it. But make it clear which method you are testing.

Also your util class is quite big and have a hard time believe that all cases are tested.