Replace early returns with implicit returns

Early return has a cost in JRuby, not big but still a cost.
Optimize Future.all

Wait only for one future at a time. Once the first future has completed, wait for the next one, and so on (short-circuiting when the first fails).

Since we have to wait for them all anyway it doesn’t really matter if we wait for all of them at the same time, or one by one. Once the first future has completed it’s likely that many of the other have also completed, and calling their #on_complete will be cheaper.