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.
Actually yes it has a lot of methods but 90% of them end up in the same two methods just using different default values since most of the time you are fine with the defaults but if not you can set them.

The naming: well everything without the addition _value is wait, if there is the suffix _value it is used together with return values. Pretty simple. You always have two different tasks and to get all possible cases I block one or the other.