!act #16125 Timeout Calls through CircuitBreaker.

CircuitBreaker used to wait idenfinitly for a call and only compare
duration after the facts. It will now throw a TimeoutException.

This is not so good for performance. `after` will schedule the `throw` for each call, also for those that are successful.
I think we need to implement something similar to `after` here, but cancel the `Cancellable` that is returned from `scheduleOnce` if the `bodyFuture` completes (with success or failure) before the timeout.