Added takeWhile() and did some dog-fooding with the new foldLeft with a termination condition to clean up FunctionUtils.and() and .or().