Iterable<T>::ApplyUntilTrue() now takes std::function so can be used with lambdas (STATIC version for direct function call); all this code needs cleanup - and performance testing...