Major simplification of when_all. Also, renamed when_all_range to when_all and use overloading to differentiate. Also added when_all overload for containers