British Petroleum agrees to pay $18.7B for 2010 oil spill