Gates Foundation pledges $7 billion for Africa as Ukraine war diverts donor cash